diff options
author | Sylvain Joubert <joubert.sy@gmail.com> | 2016-11-15 10:55:03 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2016-11-15 16:01:01 (GMT) |
commit | 5ca4abb27f314ce03fc337514c489e67bfcf0ee5 (patch) | |
tree | 55fba2564bb4164b7b395594a6be3ed56fc7056b /Source/CursesDialog | |
parent | a9562eac3ee74b3ed396f2900dfae322186e2ebe (diff) | |
download | CMake-5ca4abb27f314ce03fc337514c489e67bfcf0ee5.zip CMake-5ca4abb27f314ce03fc337514c489e67bfcf0ee5.tar.gz CMake-5ca4abb27f314ce03fc337514c489e67bfcf0ee5.tar.bz2 |
ccmake: Correctly display edit mode and associated keys
Specific widgets can implement `PrintKeys` but their effects were hidden
by the main widget `PrintKeys`. Fix this to give the user a better hint
about the edit mode status.
Closes: #13757
Diffstat (limited to 'Source/CursesDialog')
-rw-r--r-- | Source/CursesDialog/cmCursesMainForm.cxx | 91 | ||||
-rw-r--r-- | Source/CursesDialog/cmCursesStringWidget.cxx | 4 |
2 files changed, 46 insertions, 49 deletions
diff --git a/Source/CursesDialog/cmCursesMainForm.cxx b/Source/CursesDialog/cmCursesMainForm.cxx index fd4ecd1..4b5b4b1 100644 --- a/Source/CursesDialog/cmCursesMainForm.cxx +++ b/Source/CursesDialog/cmCursesMainForm.cxx @@ -347,61 +347,56 @@ void cmCursesMainForm::PrintKeys(int process /* = 0 */) cw = reinterpret_cast<cmCursesWidget*>(field_userptr(currentField)); } - if (cw) { - cw->PrintKeys(); - } - - // { - // } - // else - // { - char firstLine[512] = ""; - char secondLine[512] = ""; - char thirdLine[512] = ""; - if (process) { - const char* clearLine = - " "; - strcpy(firstLine, clearLine); - strcpy(secondLine, clearLine); - strcpy(thirdLine, clearLine); - } else { - if (this->OkToGenerate) { - sprintf(firstLine, - "Press [c] to configure Press [g] to generate and exit"); + char fmt_s[] = "%s"; + if (cw == CM_NULLPTR || !cw->PrintKeys()) { + char firstLine[512] = ""; + char secondLine[512] = ""; + char thirdLine[512] = ""; + if (process) { + const char* clearLine = + " "; + strcpy(firstLine, clearLine); + strcpy(secondLine, clearLine); + strcpy(thirdLine, clearLine); } else { - sprintf(firstLine, - "Press [c] to configure "); - } - { - const char* toggleKeyInstruction = - "Press [t] to toggle advanced mode (Currently %s)"; - sprintf(thirdLine, toggleKeyInstruction, - this->AdvancedMode ? "On" : "Off"); + if (this->OkToGenerate) { + sprintf(firstLine, + "Press [c] to configure Press [g] to generate and exit"); + } else { + sprintf(firstLine, + "Press [c] to configure "); + } + { + const char* toggleKeyInstruction = + "Press [t] to toggle advanced mode (Currently %s)"; + sprintf(thirdLine, toggleKeyInstruction, + this->AdvancedMode ? "On" : "Off"); + } + sprintf(secondLine, "Press [h] for help " + "Press [q] to quit without generating"); } - sprintf(secondLine, "Press [h] for help " - "Press [q] to quit without generating"); - } - curses_move(y - 4, 0); - char fmt_s[] = "%s"; - char fmt[512] = "Press [enter] to edit option Press [d] to delete an entry"; - if (process) { - strcpy(fmt, " "); + curses_move(y - 4, 0); + char fmt[512] = + "Press [enter] to edit option Press [d] to delete an entry"; + if (process) { + strcpy(fmt, " "); + } + printw(fmt_s, fmt); + curses_move(y - 3, 0); + printw(fmt_s, firstLine); + curses_move(y - 2, 0); + printw(fmt_s, secondLine); + curses_move(y - 1, 0); + printw(fmt_s, thirdLine); } - printw(fmt_s, fmt); - curses_move(y - 3, 0); - printw(fmt_s, firstLine); - curses_move(y - 2, 0); - printw(fmt_s, secondLine); - curses_move(y - 1, 0); - printw(fmt_s, thirdLine); if (cw) { - sprintf(firstLine, "Page %d of %d", cw->GetPage(), this->NumberOfPages); - curses_move(0, 65 - static_cast<unsigned int>(strlen(firstLine)) - 1); - printw(fmt_s, firstLine); + char pageLine[512] = ""; + sprintf(pageLine, "Page %d of %d", cw->GetPage(), this->NumberOfPages); + curses_move(0, 65 - static_cast<unsigned int>(strlen(pageLine)) - 1); + printw(fmt_s, pageLine); } - // } pos_form_cursor(this->Form); } diff --git a/Source/CursesDialog/cmCursesStringWidget.cxx b/Source/CursesDialog/cmCursesStringWidget.cxx index eabc642..ff189f0 100644 --- a/Source/CursesDialog/cmCursesStringWidget.cxx +++ b/Source/CursesDialog/cmCursesStringWidget.cxx @@ -202,7 +202,9 @@ bool cmCursesStringWidget::PrintKeys() printw(fmt_s, firstLine); curses_move(y - 3, 0); - printw(fmt_s, "Editing option, press [enter] to leave edit."); + printw(fmt_s, "Editing option, press [enter] to confirm"); + curses_move(y - 2, 0); + printw(fmt_s, " press [esc] to cancel"); return true; } return false; |