The entry widgets are now created with what is initially available on the terminal.
This commit is contained in:
parent
d0d25bb989
commit
d53458de9a
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue