1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221
|
#ifndef __WU_QMULTI_PAGE_DIALOG_H__
#define __WU_QMULTI_PAGE_DIALOG_H__
/*LICENSE_START*/
/*
* Copyright 1995-2002 Washington University School of Medicine
*
* http://brainmap.wustl.edu
*
* This file is part of CARET.
*
* CARET 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 2 of the License, or
* (at your option) any later version.
*
* CARET 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 CARET; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
/*LICENSE_END*/
#include <QVector>
#include "WuQDialog.h"
class QComboBox;
class QDialogButtonBox;
class QFrame;
class QHBoxLayout;
class QStackedWidget;
class QToolBar;
class QToolButton;
/// page for generic multipage dialog
class WuQMultiPageDialogPage : public QWidget {
Q_OBJECT
public:
// constructor
WuQMultiPageDialogPage();
// destructor
virtual ~WuQMultiPageDialogPage();
// apply the pages settings
virtual void applyPage() = 0;
// create the page
virtual QWidget* createPage() = 0;
// update the page
virtual void updatePage() = 0;
// see if the page is valid
virtual bool getPageValid() const = 0;
protected:
};
/// generic multi-page dialog
class WuQMultiPageDialog : public WuQDialog {
Q_OBJECT
public:
/// page creation time
enum PAGE_CREATION {
/// create when first displayed
PAGE_CREATION_WHEN_DISPLAYED,
/// create immediately
PAGE_CREATION_IMMEDIATELY
};
// constructor
WuQMultiPageDialog(const PAGE_CREATION pageCreationIn,
const int numberOfToolBarsIn,
QWidget* parent = 0,
Qt::WindowFlags flags = 0);
// destructor
virtual ~WuQMultiPageDialog();
// update the dialog
void updateDialog();
// add a page
void addPage(const QString& pageName,
WuQMultiPageDialogPage* page);
// create and add a tool button to the dialog
QToolButton* addToolButton(const int toolBarNumber,
const QString& buttonText,
const QString& toolTipText,
const QObject* receiver,
const char* member);
// create a tool button
QToolButton* createToolButton(const QString& buttonText,
const QString& toolTipText,
const QObject* receiver,
const char* member);
// add a widget to a toolbar
void addWidgetToToolBar(const int toolBarNumber,
QWidget* widget);
// show a page
void showPage(WuQMultiPageDialogPage* page);
// show the dialog
virtual void show();
public slots:
/// called to close dialog
virtual bool close();
protected slots:
/// called when page back tool button clicked
void slotPageBackToolButtonClicked();
/// called when page forward tool button clicked
void slotPageFwdToolButtonClicked();
/// called when page selection combo box selection is made
void slotPageSelectionComboBox(int);
/// called when apply button is clicked
void slotApplyButtonClicked();
protected:
/// class for data on each page
class PageInfo {
public:
/// constructor
PageInfo(const QString& nameIn,
WuQMultiPageDialogPage* dataPageIn) {
name = nameIn;
dataPage = dataPageIn;
pageComboBoxIndex = -1;
pageWidget = NULL;
}
/// destructor
~PageInfo() { }
/// name of page
QString name;
/// index of page in combo box
int pageComboBoxIndex;
/// the page
WuQMultiPageDialogPage* dataPage;
/// the page's widget
QWidget* pageWidget;
};
// set the default page
void setDefaultPage(WuQMultiPageDialogPage* defaultPageIn);
/// get currently displayed page
PageInfo* getDisplayedPage();
/// update the page selection combo box
void updatePageSelectionComboBox();
/// show a page
void showPage(PageInfo* p,
const bool updatePagesVisited);
/// when to create pages
const PAGE_CREATION pageCreation;
/// the pages
QVector<PageInfo*> pagesVector;
/// pages that have been visited
QVector<PageInfo*> pagesVisited;
/// index into pages visited
int pagesVisitedIndex;
/// the toolbar layout
QVector<QHBoxLayout*> toolBarLayouts;
/// page selection combo box
QComboBox* pageSelectionComboBox;
/// page back tool button
QToolButton* pageBackToolButton;
/// page fwd tool button
QToolButton* pageForwardToolButton;
/// frame for operations pages
QFrame* pagesFrameWidget;
/// stacked widget containing pages
QStackedWidget* pagesStackedWidget;
/// dialog's button box
QDialogButtonBox* dialogButtonBox;
/// first time dialog shown
bool firstTimeDialogShown;
/// the default page
WuQMultiPageDialogPage* defaultPage;
};
#endif // __WU_QMULTI_PAGE_DIALOG_H__
|