make tag editor proof against tiny screen size

This commit is contained in:
Andrzej Rybczak
2009-09-04 15:02:22 +02:00
parent 7da142a4c7
commit df0d62736e
2 changed files with 14 additions and 8 deletions

View File

@@ -45,15 +45,14 @@ TagEditor *myTagEditor = new TagEditor;
const std::string TagEditor::PatternsFile = config_dir + "patterns.list"; const std::string TagEditor::PatternsFile = config_dir + "patterns.list";
std::deque<std::string> TagEditor::Patterns; std::deque<std::string> TagEditor::Patterns;
const size_t TagEditor::MiddleColumnWidth = 26;
size_t TagEditor::LeftColumnWidth; size_t TagEditor::LeftColumnWidth;
size_t TagEditor::MiddleColumnWidth;
size_t TagEditor::MiddleColumnStartX; size_t TagEditor::MiddleColumnStartX;
size_t TagEditor::RightColumnWidth; size_t TagEditor::RightColumnWidth;
size_t TagEditor::RightColumnStartX; size_t TagEditor::RightColumnStartX;
const size_t TagEditor::FParserDialogWidth = 30; size_t TagEditor::FParserDialogWidth;
const size_t TagEditor::FParserDialogHeight = 6; size_t TagEditor::FParserDialogHeight;
size_t TagEditor::FParserWidth; size_t TagEditor::FParserWidth;
size_t TagEditor::FParserWidthOne; size_t TagEditor::FParserWidthOne;
size_t TagEditor::FParserWidthTwo; size_t TagEditor::FParserWidthTwo;
@@ -143,11 +142,14 @@ void TagEditor::Init()
void TagEditor::SetDimensions() void TagEditor::SetDimensions()
{ {
LeftColumnWidth = COLS/2-MiddleColumnWidth/2; MiddleColumnWidth = std::min(26, COLS-2);
LeftColumnWidth = (COLS-MiddleColumnWidth)/2;
MiddleColumnStartX = LeftColumnWidth+1; MiddleColumnStartX = LeftColumnWidth+1;
RightColumnWidth = COLS-LeftColumnWidth-MiddleColumnWidth-2; RightColumnWidth = COLS-LeftColumnWidth-MiddleColumnWidth-2;
RightColumnStartX = LeftColumnWidth+MiddleColumnWidth+2; RightColumnStartX = LeftColumnWidth+MiddleColumnWidth+2;
FParserDialogWidth = std::min(30, COLS);
FParserDialogHeight = std::min(size_t(6), MainHeight);
FParserWidth = COLS*0.9; FParserWidth = COLS*0.9;
FParserHeight = std::min(size_t(LINES*0.8), MainHeight); FParserHeight = std::min(size_t(LINES*0.8), MainHeight);
FParserWidthOne = FParserWidth/2; FParserWidthOne = FParserWidth/2;
@@ -162,6 +164,7 @@ void TagEditor::Resize()
Dirs->Resize(LeftColumnWidth, MainHeight); Dirs->Resize(LeftColumnWidth, MainHeight);
TagTypes->Resize(MiddleColumnWidth, MainHeight); TagTypes->Resize(MiddleColumnWidth, MainHeight);
Tags->Resize(RightColumnWidth, MainHeight); Tags->Resize(RightColumnWidth, MainHeight);
FParserDialog->Resize(FParserDialogWidth, FParserDialogHeight);
FParser->Resize(FParserWidthOne, FParserHeight); FParser->Resize(FParserWidthOne, FParserHeight);
FParserLegend->Resize(FParserWidthTwo, FParserHeight); FParserLegend->Resize(FParserWidthTwo, FParserHeight);
FParserPreview->Resize(FParserWidthTwo, FParserHeight); FParserPreview->Resize(FParserWidthTwo, FParserHeight);
@@ -176,6 +179,9 @@ void TagEditor::Resize()
FParserLegend->MoveTo((COLS-FParserWidth)/2+FParserWidthOne, (MainHeight-FParserHeight)/2+MainStartY); FParserLegend->MoveTo((COLS-FParserWidth)/2+FParserWidthOne, (MainHeight-FParserHeight)/2+MainStartY);
FParserPreview->MoveTo((COLS-FParserWidth)/2+FParserWidthOne, (MainHeight-FParserHeight)/2+MainStartY); FParserPreview->MoveTo((COLS-FParserWidth)/2+FParserWidthOne, (MainHeight-FParserHeight)/2+MainStartY);
if (MainHeight < 5 && (w == FParserDialog || w == FParser || w == FParserHelper)) // screen too low
w = TagTypes; // fall back to main columns
hasToBeResized = 0; hasToBeResized = 0;
} }

View File

@@ -111,14 +111,14 @@ class TagEditor : public Screen<Window>
static const std::string PatternsFile; static const std::string PatternsFile;
static std::deque<std::string> Patterns; static std::deque<std::string> Patterns;
static const size_t MiddleColumnWidth; static size_t MiddleColumnWidth;
static size_t LeftColumnWidth; static size_t LeftColumnWidth;
static size_t MiddleColumnStartX; static size_t MiddleColumnStartX;
static size_t RightColumnWidth; static size_t RightColumnWidth;
static size_t RightColumnStartX; static size_t RightColumnStartX;
static const size_t FParserDialogWidth; static size_t FParserDialogWidth;
static const size_t FParserDialogHeight; static size_t FParserDialogHeight;
static size_t FParserWidth; static size_t FParserWidth;
static size_t FParserWidthOne; static size_t FParserWidthOne;
static size_t FParserWidthTwo; static size_t FParserWidthTwo;