Przeglądaj źródła

The entry widgets are now created with what is initially available on the terminal.

Berk Geveci 23 lat temu
rodzic
commit
d53458de9a

+ 1 - 1
Source/CursesDialog/ccmake.cxx

@@ -117,7 +117,7 @@ int main(int argc, char** argv)
 
   cmCursesMainForm* myform;
 
-  myform = new cmCursesMainForm(args);
+  myform = new cmCursesMainForm(args, x);
 
   cmSystemTools::SetErrorCallback(CMakeErrorHandler);
 

+ 13 - 10
Source/CursesDialog/cmCursesCacheEntryComposite.cxx

@@ -23,19 +23,22 @@
 #include "cmCursesDummyWidget.h"
 #include "../cmSystemTools.h"
 
-cmCursesCacheEntryComposite::cmCursesCacheEntryComposite(const char* key) :
-  m_Key(key)
+cmCursesCacheEntryComposite::cmCursesCacheEntryComposite(const char* key,
+							 int labelwidth,
+							 int entrywidth) :
+  m_Key(key), m_LabelWidth(labelwidth), m_EntryWidth(entrywidth)
 {
-  m_Label = new cmCursesLabelWidget(30, 1, 1, 1, key);
+  m_Label = new cmCursesLabelWidget(m_LabelWidth, 1, 1, 1, key);
   m_IsNewLabel = new cmCursesLabelWidget(1, 1, 1, 1, " ");
   m_Entry = 0;
 }
 
 cmCursesCacheEntryComposite::cmCursesCacheEntryComposite(
-  const char* key, const cmCacheManager::CacheEntry& value, bool isNew) :
-  m_Key(key)
+  const char* key, const cmCacheManager::CacheEntry& value, bool isNew, 
+  int labelwidth, int entrywidth) 
+  : m_Key(key), m_LabelWidth(labelwidth), m_EntryWidth(entrywidth)
 {
-  m_Label = new cmCursesLabelWidget(30, 1, 1, 1, key);
+  m_Label = new cmCursesLabelWidget(m_LabelWidth, 1, 1, 1, key);
   if (isNew)
     {
     m_IsNewLabel = new cmCursesLabelWidget(1, 1, 1, 1, "*");
@@ -49,7 +52,7 @@ cmCursesCacheEntryComposite::cmCursesCacheEntryComposite(
   switch ( value.m_Type )
     {
     case  cmCacheManager::BOOL:
-      m_Entry = new cmCursesBoolWidget(30, 1, 1, 1);
+      m_Entry = new cmCursesBoolWidget(m_EntryWidth, 1, 1, 1);
       if (cmSystemTools::IsOn(value.m_Value.c_str()))
 	{
 	static_cast<cmCursesBoolWidget*>(m_Entry)->SetValueAsBool(true);
@@ -60,17 +63,17 @@ cmCursesCacheEntryComposite::cmCursesCacheEntryComposite(
 	}
       break;
     case cmCacheManager::PATH:
-      m_Entry = new cmCursesPathWidget(30, 1, 1, 1);
+      m_Entry = new cmCursesPathWidget(m_EntryWidth, 1, 1, 1);
       static_cast<cmCursesPathWidget*>(m_Entry)->SetString(
 	value.m_Value.c_str());
       break;
     case cmCacheManager::FILEPATH:
-      m_Entry = new cmCursesFilePathWidget(30, 1, 1, 1);
+      m_Entry = new cmCursesFilePathWidget(m_EntryWidth, 1, 1, 1);
       static_cast<cmCursesFilePathWidget*>(m_Entry)->SetString(
 	value.m_Value.c_str());
       break;
     case cmCacheManager::STRING:
-      m_Entry = new cmCursesStringWidget(30, 1, 1, 1);
+      m_Entry = new cmCursesStringWidget(m_EntryWidth, 1, 1, 1);
       static_cast<cmCursesStringWidget*>(m_Entry)->SetString(
 	value.m_Value.c_str());
       break;

+ 4 - 2
Source/CursesDialog/cmCursesCacheEntryComposite.h

@@ -23,10 +23,10 @@
 class cmCursesCacheEntryComposite
 {
 public:
-  cmCursesCacheEntryComposite(const char* key);
+  cmCursesCacheEntryComposite(const char* key, int labelwidth, int entrywidth);
   cmCursesCacheEntryComposite(const char* key,
 			      const cmCacheManager::CacheEntry& value, 
-			      bool isNew);
+			      bool isNew, int labelwidth, int entrywidth);
   ~cmCursesCacheEntryComposite();
   const char* GetValue();
 
@@ -40,6 +40,8 @@ protected:
   cmCursesLabelWidget* m_IsNewLabel;
   cmCursesWidget* m_Entry;
   std::string m_Key;
+  int m_LabelWidth;
+  int m_EntryWidth;
 };
 
 #endif // __cmCursesCacheEntryComposite_h

+ 16 - 6
Source/CursesDialog/cmCursesMainForm.cxx

@@ -33,8 +33,9 @@ inline int ctrl(int z)
     return (z&037);
 } 
 
-cmCursesMainForm::cmCursesMainForm(std::vector<std::string> const& args) :
-  m_Args(args)
+cmCursesMainForm::cmCursesMainForm(std::vector<std::string> const& args,
+				   int initWidth) :
+  m_Args(args), m_InitialWidth(initWidth)
 {
   m_NumberOfPages = 0;
   m_Fields = 0;
@@ -116,12 +117,14 @@ void cmCursesMainForm::InitializeUI()
       }
     }
 
+  int entrywidth = m_InitialWidth - 35;
+
   cmCursesCacheEntryComposite* comp;
   if ( count == 0 )
     {
     // If cache is empty, display a label saying so and a
     // dummy entry widget (does not respond to input)
-    comp = new cmCursesCacheEntryComposite("EMPTY CACHE");
+    comp = new cmCursesCacheEntryComposite("EMPTY CACHE", 30, 30);
     comp->m_Entry = new cmCursesDummyWidget(1, 1, 1, 1);
     newEntries->push_back(comp);
     }
@@ -144,7 +147,8 @@ void cmCursesMainForm::InitializeUI()
       if (!this->LookForCacheEntry(key))
 	{
 	newEntries->push_back(new cmCursesCacheEntryComposite(key, value,
-							      true));
+							      true, 30,
+							      entrywidth));
 	m_OkToGenerate = false;
 	}
       }
@@ -164,7 +168,8 @@ void cmCursesMainForm::InitializeUI()
       if (this->LookForCacheEntry(key))
 	{
 	newEntries->push_back(new cmCursesCacheEntryComposite(key, value,
-							      false));
+							      false, 30,
+							      entrywidth));
 	}
       }
     }
@@ -266,6 +271,7 @@ void cmCursesMainForm::Render(int left, int top, int width, int height)
 
   // Wrong window size
   if ( width < cmCursesMainForm::MIN_WIDTH  || 
+       width < m_InitialWidth               ||
        height < cmCursesMainForm::MIN_HEIGHT )
     {
     return;
@@ -337,6 +343,7 @@ void cmCursesMainForm::PrintKeys()
   int x,y;
   getmaxyx(stdscr, y, x);
   if ( x < cmCursesMainForm::MIN_WIDTH  || 
+       x < m_InitialWidth               ||
        y < cmCursesMainForm::MIN_HEIGHT )
     {
     return;
@@ -405,12 +412,15 @@ void cmCursesMainForm::UpdateStatusBar()
   getmaxyx(stdscr, y, x);
   // If window size is too small, display error and return
   if ( x < cmCursesMainForm::MIN_WIDTH  || 
+       x < m_InitialWidth               ||
        y < cmCursesMainForm::MIN_HEIGHT )
     {
     curses_clear();
     curses_move(0,0);
     printw("Window is too small. A size of at least %dx%d is required.",
-	   cmCursesMainForm::MIN_WIDTH, cmCursesMainForm::MIN_HEIGHT);
+	   (cmCursesMainForm::MIN_WIDTH < m_InitialWidth ?
+	    m_InitialWidth : cmCursesMainForm::MIN_WIDTH), 
+	   cmCursesMainForm::MIN_HEIGHT);
     touchwin(stdscr); 
     wrefresh(stdscr); 
     return;

+ 2 - 1
Source/CursesDialog/cmCursesMainForm.h

@@ -31,7 +31,7 @@ class cmCursesCacheEntryComposite;
 class cmCursesMainForm : public cmCursesForm
 {
 public:
-  cmCursesMainForm(std::vector<std::string> const& args);
+  cmCursesMainForm(std::vector<std::string> const& args, int initwidth);
   virtual ~cmCursesMainForm();
   
   /**
@@ -129,6 +129,7 @@ protected:
   // Number of pages displayed
   int m_NumberOfPages;
 
+  int m_InitialWidth;
 };
 
 #endif // __cmCursesMainForm_h