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

This commit is contained in:
Berk Geveci 2002-05-01 11:34:27 -04:00
parent d0d25bb989
commit d53458de9a
5 changed files with 36 additions and 20 deletions

View File

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

View File

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

View File

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

View File

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

View File

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