diff --git a/glabels/CMakeLists.txt b/glabels/CMakeLists.txt index 262395b..65c54b5 100644 --- a/glabels/CMakeLists.txt +++ b/glabels/CMakeLists.txt @@ -24,6 +24,7 @@ set (glabels_sources MainWindow.cpp MergeView.cpp MiniPreviewPixmap.cpp + NotebookUtil.cpp ObjectEditor.cpp PreferencesDialog.cpp PrintView.cpp diff --git a/glabels/NotebookUtil.cpp b/glabels/NotebookUtil.cpp new file mode 100644 index 0000000..cab79d0 --- /dev/null +++ b/glabels/NotebookUtil.cpp @@ -0,0 +1,61 @@ +/* NotebookUtil.cpp + * + * Copyright (C) 2015 Jim Evins + * + * This file is part of gLabels-qt. + * + * gLabels-qt is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * gLabels-qt is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with gLabels-qt. If not, see . + */ + +#include "NotebookUtil.h" + +#include + + +namespace glabels +{ + + /// + /// Establish notebook size based on largest page + /// + void NotebookUtil::establishSize( QTabWidget* notebook ) + { + // Establish size of notebook size based on its largest page. + // This may not be established until runtime, due to varying + // lengths of translated strings or may even be influenced by + // the current theme and fonts. Without doing this, the + // notebook may change size as tabs are selected for the first + // time, which can be very annoying. + + // This hack shows the top-level window containing the notebook, + // then shows each page and invalidates the window's layout. + // Finally it re-hides the window without ever having + // relinquishing control to the Qt event loop. + + QWidget* window = notebook->window(); + int iTabSaved = notebook->currentIndex(); + int nTabs = notebook->count(); + + window->show(); + for ( int iTab = 0; iTab < nTabs; iTab++ ) + { + notebook->setCurrentIndex( iTab ); + window->layout()->invalidate(); + } + window->hide(); + + notebook->setCurrentIndex( iTabSaved ); + } + +} diff --git a/glabels/NotebookUtil.h b/glabels/NotebookUtil.h new file mode 100644 index 0000000..c4f7140 --- /dev/null +++ b/glabels/NotebookUtil.h @@ -0,0 +1,40 @@ +/* NotebookUtil.h + * + * Copyright (C) 2015 Jim Evins + * + * This file is part of gLabels-qt. + * + * gLabels-qt is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * gLabels-qt is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with gLabels-qt. If not, see . + */ + +#ifndef model_NotebookUtil_h +#define model_NotebookUtil_h + + +#include +#include + + +namespace glabels +{ + namespace NotebookUtil + { + + void establishSize( QTabWidget* notebook ); + + } +} + + +#endif // model_NotebookUtil_h diff --git a/glabels/SelectProductDialog.cpp b/glabels/SelectProductDialog.cpp index 990b9fc..30baaee 100644 --- a/glabels/SelectProductDialog.cpp +++ b/glabels/SelectProductDialog.cpp @@ -20,6 +20,7 @@ #include "SelectProductDialog.h" +#include "NotebookUtil.h" #include "TemplatePickerItem.h" #include "model/Db.h" @@ -62,6 +63,8 @@ namespace glabels connect( check, SIGNAL(clicked()), this, SLOT(onCategoryCheckClicked()) ); } + NotebookUtil::establishSize( modeNotebook ); + QList tmplates = model::Db::templates(); templatePicker->setTemplates( tmplates );