summaryrefslogtreecommitdiffstats
path: root/Source/CursesDialog
diff options
context:
space:
mode:
authorSylvain Joubert <joubert.sy@gmail.com>2016-11-15 10:55:03 (GMT)
committerBrad King <brad.king@kitware.com>2016-11-15 16:01:01 (GMT)
commit5ca4abb27f314ce03fc337514c489e67bfcf0ee5 (patch)
tree55fba2564bb4164b7b395594a6be3ed56fc7056b /Source/CursesDialog
parenta9562eac3ee74b3ed396f2900dfae322186e2ebe (diff)
downloadCMake-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.cxx91
-rw-r--r--Source/CursesDialog/cmCursesStringWidget.cxx4
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;