diff --git a/TODO b/TODO index a8c20c6e..ebc5a5b9 100644 --- a/TODO +++ b/TODO @@ -1,21 +1,17 @@ TO DO for Seq66 0.99.8 Chris Ahlstrom -2019-04-13 to 2023-08-25 +2019-04-13 to 2023-08-26 Misc: - - The time-line shows measures 11, 21, etc. for Peter Gunn tune. - The main window shows PPQN = 1920, but in qseqtime get_ppqn() - shows 192! Setting ppqn in 'usr' file fixes this issue. - - Make sure L/R looping buttons (main and song) works. - There are many "TODOs" in the automation slots. - - Add a feature to start playback when the first note comes - into a pattern when recording is set. [Turns out to be quite tricky!] - Document and test all this churn. - Document better all of the keys on the seqroll, etc. Add a context/focus-sensitive Help / Keyboard menu - Make the performer get/put_settings() functions robust. - Randomizing seems to have a negative bias (after many repeats). + - Add a feature to start playback when the first note comes + into a pattern when recording is set. [Turns out to be quite tricky!] Some of these issues will be pushed off for the distant Seq66v2. diff --git a/seq_qt5/forms/qsappinfo.ui b/seq_qt5/forms/qsappinfo.ui index 9b97c456..3874f5d5 100644 --- a/seq_qt5/forms/qsappinfo.ui +++ b/seq_qt5/forms/qsappinfo.ui @@ -16,7 +16,7 @@ - 204 + 340 428 91 32 @@ -81,8 +81,7 @@ hr { height: 1px; border-width: 0; } li.unchecked::marker { content: "\2610"; } li.checked::marker { content: "\2612"; } </style></head><body style=" font-family:'Noto Sans'; font-size:12pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Each pane has keystrokes separate from the automation keystrokes, and thus not modifiable. The arrow-keys are hardwired for scroll the pane.</p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(Filled at runtime)</p></body></html> diff --git a/seq_qt5/forms/qsmainwnd.ui b/seq_qt5/forms/qsmainwnd.ui index be8aeba2..7b4f0cf6 100644 --- a/seq_qt5/forms/qsmainwnd.ui +++ b/seq_qt5/forms/qsmainwnd.ui @@ -1571,6 +1571,7 @@ beats/minute. + @@ -1706,6 +1707,11 @@ beats/minute. &Build Info... + + + App &Keys... + + About Qt... diff --git a/seq_qt5/include/qsmainwnd.hpp b/seq_qt5/include/qsmainwnd.hpp index 3711338d..fd6831fc 100644 --- a/seq_qt5/include/qsmainwnd.hpp +++ b/seq_qt5/include/qsmainwnd.hpp @@ -27,7 +27,7 @@ * \library seq66 application * \author Chris Ahlstrom * \date 2018-01-01 - * \updates 2023-07-08 + * \updates 2023-08-26 * \license GNU GPLv2 or above * * The main window is known as the "Patterns window" or "Patterns panel". It @@ -89,6 +89,7 @@ namespace seq66 class qperfeditframe64; class qplaylistframe; class qsabout; + class qsappinfo; class qsbuildinfo; class qseditoptions; class qseqeditex; @@ -321,6 +322,7 @@ class qsmainwnd final : public QMainWindow, protected performer::callbacks qseditoptions * m_dialog_prefs; qsabout * m_dialog_about; qsbuildinfo * m_dialog_build_info; + qsappinfo * m_dialog_app_info; qsessionframe * m_session_frame; qsetmaster * m_set_master; qmutemaster * m_mute_master; @@ -474,6 +476,7 @@ private slots: void show_save_mutes_dialog (); /* NOT YET CONNECTED */ void show_qsabout (); void show_qsbuildinfo (); + void show_qsappinfo (); void tabWidgetClicked (int newindex); void conditional_update (); /* redraw certain GUI elements */ void load_editor (int seqid); diff --git a/seq_qt5/src/qsappinfo.cpp b/seq_qt5/src/qsappinfo.cpp index 623f5e31..44478a97 100644 --- a/seq_qt5/src/qsappinfo.cpp +++ b/seq_qt5/src/qsappinfo.cpp @@ -61,6 +61,54 @@ namespace seq66 { +/** + * Currently just test code. + */ + +const std::string s_main_html +{ +"" +"" +"" +"" +"" +"" +"" +"

Common Keystrokes

" +"

" +" Each piano roll panel has keystrokes separate from the automation keystrokes, and thus not configurable. The arrow keys and some other characters provide functions that are common to the pattern edit and song \"piano rolls\"." +"
" +" " +" " +" " +" " +" " +" " +" " +" " +" " +" " +" " +" " +" " +" " +" " +" " +" " +"
Standard movement keys Arrow-left, -right, -up, -down
vi-like movement keys h, j, k, l" +"
Standard large movement keys Page-Up, Page-Down, and Ctrl-Home, Ctrl-End" +"
Horizontal zoom keys Zoom out 'z', zoom in 'Z', reset '0'" +"
Vertical zoom keys Zoom out 'v', zoom in 'V', reset '0'" +"
" +"" +"" +}; + /** * Principal constructor. */ @@ -70,7 +118,7 @@ qsappinfo::qsappinfo (QWidget * parent) : ui (new Ui::qsappinfo) { ui->setupUi(this); - + ui->textBrowser->setHtml(qt(s_main_html)); } qsappinfo::~qsappinfo () diff --git a/seq_qt5/src/qsmainwnd.cpp b/seq_qt5/src/qsmainwnd.cpp index be8c8072..33434580 100644 --- a/seq_qt5/src/qsmainwnd.cpp +++ b/seq_qt5/src/qsmainwnd.cpp @@ -24,7 +24,7 @@ * \library seq66 application * \author Chris Ahlstrom * \date 2018-01-01 - * \updates 2023-08-21 + * \updates 2023-08-26 * \license GNU GPLv2 or above * * The main window is known as the "Patterns window" or "Patterns panel". It @@ -59,6 +59,7 @@ * Quit/Exit quit() Normal Qt application closing * Help show_qsabout() Show Help About (version info) * show_qsbuildinfo() Show features of the build + * show_qsappinfo() Show additional features */ #include /* QErrorMessage */ @@ -93,6 +94,7 @@ #include "qperfeditframe64.hpp" /* seq66::qperfeditframe64 class */ #include "qplaylistframe.hpp" /* seq66::qplaylistframe class */ #include "qsabout.hpp" /* seq66::qsabout dialog class */ +#include "qsappinfo.hpp" /* seq66::qsappinfo dialog class */ #include "qsbuildinfo.hpp" /* seq66::qsbuildinfo dialog class */ #include "qseditoptions.hpp" /* seq66::qseditoptions dialog */ #include "qseqeditex.hpp" /* seq66::qseqeditex container */ @@ -241,6 +243,7 @@ qsmainwnd::qsmainwnd m_dialog_prefs (nullptr), m_dialog_about (nullptr), m_dialog_build_info (nullptr), + m_dialog_app_info (nullptr), m_session_frame (nullptr), m_set_master (nullptr), m_mute_master (nullptr), @@ -372,6 +375,7 @@ qsmainwnd::qsmainwnd cb_perf(), ui->verticalWidget /*this*/, 4, 4 ); m_dialog_about = new (std::nothrow) qsabout(this); + m_dialog_app_info = new (std::nothrow) qsappinfo(this); m_dialog_build_info = new (std::nothrow) qsbuildinfo(this); make_perf_frame_in_tab(); /* create m_song_frame64 pointer */ m_live_frame = new (std::nothrow) qslivegrid @@ -474,6 +478,11 @@ qsmainwnd::qsmainwnd this, SLOT(show_qsbuildinfo()) ); connect + ( + ui->actionAppInfo, SIGNAL(triggered(bool)), + this, SLOT(show_qsappinfo()) + ); + connect ( ui->actionSongSummary, SIGNAL(triggered(bool)), this, SLOT(slot_summary_save()) @@ -2421,6 +2430,13 @@ qsmainwnd::show_qsbuildinfo () m_dialog_build_info->show(); } +void +qsmainwnd::show_qsappinfo () +{ + if (not_nullptr(m_dialog_app_info)) + m_dialog_app_info->show(); +} + /** * Loads a slightly compressed qseqeditframe64 for the selected * sequence into the "Edit" tab. It is compressed by hiding some of