From df04df01f79dff80fd78aebc51225a75501f9c7c Mon Sep 17 00:00:00 2001 From: wmayer Date: Tue, 7 Jul 2015 17:43:23 +0200 Subject: [PATCH] + add QSint test widget --- src/Mod/Sandbox/Gui/CMakeLists.txt | 2 + src/Mod/Sandbox/Gui/Command.cpp | 25 +- src/Mod/Sandbox/Gui/Overlay.cpp | 2 - src/Mod/Sandbox/Gui/TaskPanelView.cpp | 732 ++++++++++++++++++++++++++ src/Mod/Sandbox/Gui/TaskPanelView.h | 65 +++ src/Mod/Sandbox/Gui/Workbench.cpp | 3 +- 6 files changed, 825 insertions(+), 4 deletions(-) create mode 100644 src/Mod/Sandbox/Gui/TaskPanelView.cpp create mode 100644 src/Mod/Sandbox/Gui/TaskPanelView.h diff --git a/src/Mod/Sandbox/Gui/CMakeLists.txt b/src/Mod/Sandbox/Gui/CMakeLists.txt index 318dc10dc..aab6498cb 100644 --- a/src/Mod/Sandbox/Gui/CMakeLists.txt +++ b/src/Mod/Sandbox/Gui/CMakeLists.txt @@ -46,6 +46,8 @@ SET(SandboxGui_SRCS Overlay.h PreCompiled.cpp PreCompiled.h + TaskPanelView.cpp + TaskPanelView.h Workbench.cpp Workbench.h ) diff --git a/src/Mod/Sandbox/Gui/Command.cpp b/src/Mod/Sandbox/Gui/Command.cpp index a69aaeab8..bb4382480 100644 --- a/src/Mod/Sandbox/Gui/Command.cpp +++ b/src/Mod/Sandbox/Gui/Command.cpp @@ -77,7 +77,7 @@ #include #include "Workbench.h" #include "GLGraphicsView.h" - +#include "TaskPanelView.h" DEF_STD_CMD(CmdSandboxDocumentThread); @@ -1382,6 +1382,28 @@ bool CmdTestGraphicsView::isActive(void) return (getActiveGuiDocument()!=NULL); } +//=========================================================================== +// Std_TestTaskBox +//=========================================================================== +DEF_STD_CMD(CmdTestTaskBox); + +CmdTestTaskBox::CmdTestTaskBox() + : Command("Std_TestTaskBox") +{ + sGroup = "Standard-Test"; + sMenuText = "Task box"; + sToolTipText = "Task box"; + sWhatsThis = sToolTipText; + sStatusTip = sToolTipText; +} + +void CmdTestTaskBox::activated(int iMsg) +{ + QWidget* w = new SandboxGui::TaskPanelView(); + w->setAttribute(Qt::WA_DeleteOnClose); + w->show(); +} + void CreateSandboxCommands(void) { @@ -1413,4 +1435,5 @@ void CreateSandboxCommands(void) rcCmdMgr.addCommand(new CmdTestCryptographicHash()); rcCmdMgr.addCommand(new CmdMengerSponge()); rcCmdMgr.addCommand(new CmdTestGraphicsView()); + rcCmdMgr.addCommand(new CmdTestTaskBox()); } diff --git a/src/Mod/Sandbox/Gui/Overlay.cpp b/src/Mod/Sandbox/Gui/Overlay.cpp index 120275570..273887135 100644 --- a/src/Mod/Sandbox/Gui/Overlay.cpp +++ b/src/Mod/Sandbox/Gui/Overlay.cpp @@ -549,8 +549,6 @@ void DrawingPlane::draw () glPopAttrib(); glPopMatrix(); - - mustRedraw = false; } } diff --git a/src/Mod/Sandbox/Gui/TaskPanelView.cpp b/src/Mod/Sandbox/Gui/TaskPanelView.cpp new file mode 100644 index 000000000..d244af952 --- /dev/null +++ b/src/Mod/Sandbox/Gui/TaskPanelView.cpp @@ -0,0 +1,732 @@ +/*************************************************************************** + * Copyright (c) 2009 Jürgen Riegel * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library 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 Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + + +#include "PreCompiled.h" + +/// Here the FreeCAD includes sorted by Base,App,Gui...... + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "TaskPanelView.h" + + +using namespace SandboxGui; + + +#if defined(QSINT_ACTIONPANEL) +class Ui_TaskGroup +{ +public: + QAction *actionNew; + QAction *actionLoad; + QAction *actionSave; + QAction *actionPrint; + QGridLayout *gridLayout; + QSint::ActionPanel *ActionPanel; + QSint::ActionGroup *ActionGroup1; + QVBoxLayout *verticalLayout; + QRadioButton *rbDefaultScheme; + QRadioButton *rbXPBlueScheme; + QRadioButton *rbXPBlue2Scheme; + QRadioButton *rbVistaScheme; + QRadioButton *rbMacScheme; + QRadioButton *rbAndroidScheme; + QSpacerItem *verticalSpacer; + + void setupUi(QWidget *MainWindow2) + { + if (MainWindow2->objectName().isEmpty()) + MainWindow2->setObjectName(QString::fromUtf8("MainWindow2")); + MainWindow2->resize(529, 407); + MainWindow2->setStyleSheet(QString::fromUtf8("\n" + "QWidget2 {\n" +" background-color: green;\n" +"}\n" +"")); + actionNew = new QAction(MainWindow2); + actionNew->setObjectName(QString::fromUtf8("actionNew")); + QIcon icon; + icon.addFile(QString::fromUtf8(":/icons/document-new.svg"), QSize(), QIcon::Normal, QIcon::Off); + actionNew->setIcon(icon); + actionLoad = new QAction(MainWindow2); + actionLoad->setObjectName(QString::fromUtf8("actionLoad")); + QIcon icon1; + icon1.addFile(QString::fromUtf8(":/icons/document-open.svg"), QSize(), QIcon::Normal, QIcon::Off); + actionLoad->setIcon(icon1); + actionSave = new QAction(MainWindow2); + actionSave->setObjectName(QString::fromUtf8("actionSave")); + actionSave->setEnabled(false); + QIcon icon2; + icon2.addFile(QString::fromUtf8(":/icons/document-save.svg"), QSize(), QIcon::Normal, QIcon::Off); + actionSave->setIcon(icon2); + actionPrint = new QAction(MainWindow2); + actionPrint->setObjectName(QString::fromUtf8("actionPrint")); + QIcon icon3; + icon3.addFile(QString::fromUtf8(":/icons/document-print.svg"), QSize(), QIcon::Normal, QIcon::Off); + actionPrint->setIcon(icon3); + gridLayout = new QGridLayout(MainWindow2); + gridLayout->setObjectName(QString::fromUtf8("gridLayout")); + ActionPanel = new QSint::ActionPanel(MainWindow2); + ActionPanel->setObjectName(QString::fromUtf8("ActionPanel")); + QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); + sizePolicy.setHorizontalStretch(0); + sizePolicy.setVerticalStretch(0); + sizePolicy.setHeightForWidth(ActionPanel->sizePolicy().hasHeightForWidth()); + ActionPanel->setSizePolicy(sizePolicy); + + gridLayout->addWidget(ActionPanel, 0, 0, 2, 1); + + ActionGroup1 = new QSint::ActionGroup(MainWindow2); + ActionGroup1->setObjectName(QString::fromUtf8("ActionGroup1")); + ActionGroup1->setProperty("expandable", QVariant(true)); + ActionGroup1->setProperty("header", QVariant(true)); + verticalLayout = new QVBoxLayout(ActionGroup1); + verticalLayout->setObjectName(QString::fromUtf8("verticalLayout")); + rbDefaultScheme = new QRadioButton(ActionGroup1); + rbDefaultScheme->setObjectName(QString::fromUtf8("rbDefaultScheme")); + rbDefaultScheme->setChecked(true); + + verticalLayout->addWidget(rbDefaultScheme); + + rbXPBlueScheme = new QRadioButton(ActionGroup1); + rbXPBlueScheme->setObjectName(QString::fromUtf8("rbXPBlueScheme")); + + verticalLayout->addWidget(rbXPBlueScheme); + + rbXPBlue2Scheme = new QRadioButton(ActionGroup1); + rbXPBlue2Scheme->setObjectName(QString::fromUtf8("rbXPBlue2Scheme")); + + verticalLayout->addWidget(rbXPBlue2Scheme); + + rbVistaScheme = new QRadioButton(ActionGroup1); + rbVistaScheme->setObjectName(QString::fromUtf8("rbVistaScheme")); + + verticalLayout->addWidget(rbVistaScheme); + + rbMacScheme = new QRadioButton(ActionGroup1); + rbMacScheme->setObjectName(QString::fromUtf8("rbMacScheme")); + + verticalLayout->addWidget(rbMacScheme); + + rbAndroidScheme = new QRadioButton(ActionGroup1); + rbAndroidScheme->setObjectName(QString::fromUtf8("rbAndroidScheme")); + + verticalLayout->addWidget(rbAndroidScheme); + + + gridLayout->addWidget(ActionGroup1, 0, 1, 1, 1); + + verticalSpacer = new QSpacerItem(20, 57, QSizePolicy::Minimum, QSizePolicy::Expanding); + + gridLayout->addItem(verticalSpacer, 1, 1, 1, 1); + + + retranslateUi(MainWindow2); + + QMetaObject::connectSlotsByName(MainWindow2); + } // setupUi + + void retranslateUi(QWidget *MainWindow2) + { + MainWindow2->setWindowTitle(QApplication::translate("MainWindow2", "ActionBox Example", 0, QApplication::UnicodeUTF8)); + actionNew->setText(QApplication::translate("MainWindow2", "Create new file", 0, QApplication::UnicodeUTF8)); + actionLoad->setText(QApplication::translate("MainWindow2", "Load a file", 0, QApplication::UnicodeUTF8)); + actionSave->setText(QApplication::translate("MainWindow2", "Save current file", 0, QApplication::UnicodeUTF8)); + actionPrint->setText(QApplication::translate("MainWindow2", "Print file contents", 0, QApplication::UnicodeUTF8)); + ActionGroup1->setProperty("headerText", QVariant(QApplication::translate("MainWindow2", "Choose Scheme", 0, QApplication::UnicodeUTF8))); + rbDefaultScheme->setText(QApplication::translate("MainWindow2", "Default", 0, QApplication::UnicodeUTF8)); + rbXPBlueScheme->setText(QApplication::translate("MainWindow2", "XP Blue", 0, QApplication::UnicodeUTF8)); + rbXPBlue2Scheme->setText(QApplication::translate("MainWindow2", "XP Blue 2", 0, QApplication::UnicodeUTF8)); + rbVistaScheme->setText(QApplication::translate("MainWindow2", "Vista", 0, QApplication::UnicodeUTF8)); + rbMacScheme->setText(QApplication::translate("MainWindow2", "MacOS", 0, QApplication::UnicodeUTF8)); + rbAndroidScheme->setText(QApplication::translate("MainWindow2", "Android", 0, QApplication::UnicodeUTF8)); + Q_UNUSED(MainWindow2); + } // retranslateUi + +}; + +class Ui_TaskActionBox +{ +public: + QVBoxLayout *verticalLayout; + QVBoxLayout *verticalLayout_3; + QLabel *label; + QFrame *line_2; + QGridLayout *gridLayout_2; + QSint::ActionBox *ActionBox1; + QSint::ActionBox *ActionBox2; + QSpacerItem *verticalSpacer; + QSint::ActionBox *ActionBox3; + QSint::ActionBox *ActionBox4; + Gui::TaskView::TaskGroup *ActionBox5; + QVBoxLayout *verticalLayout_4; + QLabel *label_2; + QFrame *line; + QVBoxLayout *verticalLayout_2; + QSint::ActionLabel *ActionLabel1; + QSint::ActionLabel *ActionLabel2; + QSint::ActionLabel *ActionLabel3; + + void setupUi(QWidget *MainWindow) + { + MainWindow->resize(642, 850); + QSizePolicy sizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred); + sizePolicy.setHorizontalStretch(0); + sizePolicy.setVerticalStretch(0); + sizePolicy.setHeightForWidth(MainWindow->sizePolicy().hasHeightForWidth()); + MainWindow->setSizePolicy(sizePolicy); + MainWindow->setStyleSheet(QString::fromUtf8("\n" +"SandboxGui--TaskPanelView {\n" +" background-color: green;\n" +"}\n" +"")); + verticalLayout = new QVBoxLayout(MainWindow); + verticalLayout->setObjectName(QString::fromUtf8("verticalLayout")); + verticalLayout_3 = new QVBoxLayout(); + verticalLayout_3->setObjectName(QString::fromUtf8("verticalLayout_3")); + label = new QLabel(MainWindow); + label->setObjectName(QString::fromUtf8("label")); + QSizePolicy sizePolicy1(QSizePolicy::Preferred, QSizePolicy::Maximum); + sizePolicy1.setHorizontalStretch(0); + sizePolicy1.setVerticalStretch(0); + sizePolicy1.setHeightForWidth(label->sizePolicy().hasHeightForWidth()); + label->setSizePolicy(sizePolicy1); + + verticalLayout_3->addWidget(label); + + line_2 = new QFrame(MainWindow); + line_2->setObjectName(QString::fromUtf8("line_2")); + line_2->setFrameShape(QFrame::HLine); + line_2->setFrameShadow(QFrame::Sunken); + + verticalLayout_3->addWidget(line_2); + + + verticalLayout->addLayout(verticalLayout_3); + + gridLayout_2 = new QGridLayout(); + gridLayout_2->setObjectName(QString::fromUtf8("gridLayout_2")); + ActionBox1 = new QSint::ActionBox(MainWindow); + ActionBox1->setObjectName(QString::fromUtf8("ActionBox1")); + ActionBox1->setFrameShape(QFrame::StyledPanel); + ActionBox1->setFrameShadow(QFrame::Raised); + + gridLayout_2->addWidget(ActionBox1, 0, 0, 1, 1); + + ActionBox2 = new QSint::ActionBox(MainWindow); + ActionBox2->setObjectName(QString::fromUtf8("ActionBox2")); + ActionBox2->setFrameShape(QFrame::StyledPanel); + ActionBox2->setFrameShadow(QFrame::Raised); + + gridLayout_2->addWidget(ActionBox2, 1, 0, 1, 1); + + verticalSpacer = new QSpacerItem(94, 28, QSizePolicy::Minimum, QSizePolicy::Minimum); + + gridLayout_2->addItem(verticalSpacer, 3, 0, 1, 1); + + ActionBox3 = new QSint::ActionBox(MainWindow); + ActionBox3->setObjectName(QString::fromUtf8("ActionBox3")); + ActionBox3->setFrameShape(QFrame::StyledPanel); + ActionBox3->setFrameShadow(QFrame::Raised); + + gridLayout_2->addWidget(ActionBox3, 0, 1, 1, 1); + + ActionBox4 = new QSint::ActionBox(MainWindow); + ActionBox4->setObjectName(QString::fromUtf8("ActionBox4")); + ActionBox4->setFrameShape(QFrame::StyledPanel); + ActionBox4->setFrameShadow(QFrame::Raised); + + gridLayout_2->addWidget(ActionBox4, 1, 1, 1, 1); + + ActionBox5 = new Gui::TaskView::TaskGroup(MainWindow); + ActionBox5->setObjectName(QString::fromUtf8("ActionBox5")); + ActionBox5->setFrameShape(QFrame::StyledPanel); + ActionBox5->setFrameShadow(QFrame::Raised); + + gridLayout_2->addWidget(ActionBox5, 2, 1, 1, 1); + + verticalLayout->addLayout(gridLayout_2); + + verticalLayout_4 = new QVBoxLayout(); + verticalLayout_4->setObjectName(QString::fromUtf8("verticalLayout_4")); + label_2 = new QLabel(MainWindow); + label_2->setObjectName(QString::fromUtf8("label_2")); + sizePolicy1.setHeightForWidth(label_2->sizePolicy().hasHeightForWidth()); + label_2->setSizePolicy(sizePolicy1); + + verticalLayout_4->addWidget(label_2); + + line = new QFrame(MainWindow); + line->setObjectName(QString::fromUtf8("line")); + line->setFrameShape(QFrame::HLine); + line->setFrameShadow(QFrame::Sunken); + + verticalLayout_4->addWidget(line); + + + verticalLayout->addLayout(verticalLayout_4); + + verticalLayout_2 = new QVBoxLayout(); + verticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2")); + ActionLabel1 = new QSint::ActionLabel(MainWindow); + ActionLabel1->setObjectName(QString::fromUtf8("ActionLabel1")); + QSizePolicy sizePolicy2(QSizePolicy::Preferred, QSizePolicy::Fixed); + sizePolicy2.setHorizontalStretch(0); + sizePolicy2.setVerticalStretch(0); + sizePolicy2.setHeightForWidth(ActionLabel1->sizePolicy().hasHeightForWidth()); + ActionLabel1->setSizePolicy(sizePolicy2); + + verticalLayout_2->addWidget(ActionLabel1); + + ActionLabel2 = new QSint::ActionLabel(MainWindow); + ActionLabel2->setObjectName(QString::fromUtf8("ActionLabel2")); + sizePolicy2.setHeightForWidth(ActionLabel2->sizePolicy().hasHeightForWidth()); + ActionLabel2->setSizePolicy(sizePolicy2); + QIcon icon; + icon.addFile(QString::fromUtf8(":/icons/document-open.svg"), QSize(), QIcon::Normal, QIcon::Off); + ActionLabel2->setIcon(icon); + + verticalLayout_2->addWidget(ActionLabel2); + + ActionLabel3 = new QSint::ActionLabel(MainWindow); + ActionLabel3->setObjectName(QString::fromUtf8("ActionLabel3")); + sizePolicy2.setHeightForWidth(ActionLabel3->sizePolicy().hasHeightForWidth()); + ActionLabel3->setSizePolicy(sizePolicy2); + QIcon icon1; + icon1.addFile(QString::fromUtf8(":/icons/document-print.svg"), QSize(), QIcon::Normal, QIcon::Off); + ActionLabel3->setIcon(icon1); + + verticalLayout_2->addWidget(ActionLabel3); + + + verticalLayout->addLayout(verticalLayout_2); + + + retranslateUi(MainWindow); + } // setupUi + + void retranslateUi(QWidget *MainWindow) + { + MainWindow->setWindowTitle(QApplication::translate("TestTaskBox", "ActionBox Example", 0, QApplication::UnicodeUTF8)); + label->setText(QApplication::translate("TestTaskBox", "ActionBoxes", 0, QApplication::UnicodeUTF8)); + label_2->setText(QApplication::translate("TestTaskBox", "ActionLabels", 0, QApplication::UnicodeUTF8)); + ActionLabel1->setText(QApplication::translate("TestTaskBox", "Simple clickable action", 0, QApplication::UnicodeUTF8)); + ActionLabel2->setText(QApplication::translate("TestTaskBox", "Simple clickable action with icon", 0, QApplication::UnicodeUTF8)); +#ifndef QT_NO_TOOLTIP + ActionLabel3->setToolTip(QApplication::translate("TestTaskBox", "Tooltip of the ActionLabel", 0, QApplication::UnicodeUTF8)); +#endif // QT_NO_TOOLTIP + ActionLabel3->setText(QApplication::translate("TestTaskBox", "Simple clickable action with icon and tooltip", 0, QApplication::UnicodeUTF8)); + Q_UNUSED(MainWindow); + } // retranslateUi +}; +#else +#include +#endif + +TaskPanelView::TaskPanelView(QWidget *parent) + : QWidget(parent) +{ + Gui::ActionFunction* func = new Gui::ActionFunction(this); + QAction* action = new QAction(this); + func->trigger(action, boost::bind(&TaskPanelView::executeAction, this)); + +#if defined(QSINT_ACTIONPANEL) + + QGridLayout* customLayout = new QGridLayout(this); + QTabWidget* tabWidget = new QTabWidget(this); + customLayout->addWidget(tabWidget, 0, 0); + this->resize(642, 850); + + { + Ui_TaskActionBox* ui(new Ui_TaskActionBox); + QWidget* page1 = new QWidget(); + ui->setupUi(page1); + tabWidget->addTab(page1, QLatin1String("Action Box")); + + // setup ActionBox 1 + ui->ActionBox1->setIcon(QPixmap(QString::fromAscii(":/icons/document-open.svg"))); + ui->ActionBox1->header()->setText(QString::fromAscii("Header of the group")); + connect(ui->ActionBox1->header(), SIGNAL(clicked()), action, SIGNAL(triggered())); + + QSint::ActionLabel *a1 = ui->ActionBox1->createItem(QString::fromAscii("This action has no icon")); + connect(a1, SIGNAL(clicked()), action, SIGNAL(triggered())); + QSint::ActionLabel *a2 = ui->ActionBox1->createItem(QPixmap(QString::fromAscii(":/icons/document-print.svg")), + QString::fromAscii("This action has icon")); + connect(a2, SIGNAL(clicked()), action, SIGNAL(triggered())); + + QLayout *hbl1 = ui->ActionBox1->createHBoxLayout(); + QSint::ActionLabel *a3 = ui->ActionBox1->createItem(QString::fromAscii("1st action in row"), hbl1); + connect(a3, SIGNAL(clicked()), action, SIGNAL(triggered())); + QSint::ActionLabel *a4 = ui->ActionBox1->createItem(QString::fromAscii("2nd action in row"), hbl1); + connect(a4, SIGNAL(clicked()), action, SIGNAL(triggered())); + + // setup ActionBox 2 + ui->ActionBox2->setIcon(QPixmap(QString::fromAscii(":/icons/document-save.png"))); + ui->ActionBox2->header()->setText(QString::fromAscii("Checkable actions allowed")); + connect(ui->ActionBox2->header(), SIGNAL(clicked()), action, SIGNAL(triggered())); + + QSint::ActionLabel *b1 = ui->ActionBox2->createItem(QString::fromAscii("Action 1 (Exclusive)")); + b1->setCheckable(true); + b1->setAutoExclusive(true); + b1->setChecked(true); + QSint::ActionLabel *b2 = ui->ActionBox2->createItem(QString::fromAscii("Action 2 (Exclusive)")); + b2->setCheckable(true); + b2->setAutoExclusive(true); + QSint::ActionLabel *b3 = ui->ActionBox2->createItem(QString::fromAscii("Action 3 (Exclusive)")); + b3->setCheckable(true); + b3->setAutoExclusive(true); + + QSint::ActionLabel *b4 = ui->ActionBox2->createItem(QString::fromAscii("Non-exclusive but still checkable")); + b4->setCheckable(true); + + // setup ActionBox 3 + ui->ActionBox3->setIcon(QPixmap(QString::fromAscii(":/icons/document-print.png"))); + ui->ActionBox3->header()->setText(QString::fromAscii("Also, widgets allowed as well")); + + ui->ActionBox3->addWidget(new QPushButton(QString::fromAscii("PushButton"), this)); + ui->ActionBox3->addWidget(new QCheckBox(QString::fromAscii("CheckBox"), this)); + QLayout *hbl3 = ui->ActionBox3->createHBoxLayout(); + ui->ActionBox3->addWidget(new QRadioButton(QString::fromAscii("RadioButton 1"), this), hbl3); + ui->ActionBox3->addWidget(new QRadioButton(QString::fromAscii("RadioButton 2"), this), hbl3); + + // setup ActionBox 4 + ui->ActionBox4->setIcon(QPixmap(QString::fromAscii(":/icons/document-open.png"))); + ui->ActionBox4->header()->setText(QString::fromAscii("ActionBox with different scheme")); + + ui->ActionBox4->createItem(QString::fromAscii("This action has no icon")); + ui->ActionBox4->createItem(QPixmap(QString::fromAscii(":/icons/document-print.png")), + QString::fromAscii("This action has icon")); + QLayout *hbl4 = ui->ActionBox4->createHBoxLayout(); + ui->ActionBox4->createItem(QString::fromAscii("1st action in row"), hbl4); + ui->ActionBox4->createItem(QString::fromAscii("2nd action in row"), hbl4); + ui->ActionBox4->createItem(QString::fromAscii("3rd action in row"), hbl4); + + const char* ActionBoxNewStyle = + "QSint--ActionBox {" + "background-color: #333333;" + "border: 1px solid #000000;" + "text-align: left;" + "}" + + "QSint--ActionBox:hover {" + "background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #666666, stop: 1 #333333);" + "border: 1px solid #222222;" + "}" + + "QSint--ActionBox QSint--ActionLabel[class='header'] {" + "text-align: center;" + "font: 14px bold;" + "color: #999999;" + "background-color: transparent;" + "border: 1px solid transparent;" + "}" + + "QSint--ActionBox QSint--ActionLabel[class='header']:hover {" + "color: #aaaaaa;" + "text-decoration: underline;" + "border: 1px dotted #aaaaaa;" + "}" + + "QSint--ActionBox QSint--ActionLabel[class='action'] {" + "background-color: transparent;" + "border: none;" + "color: #777777;" + "text-align: left;" + "font: 11px;" + "}" + + "QSint--ActionBox QSint--ActionLabel[class='action']:hover {" + "color: #888888;" + "text-decoration: underline;" + "}" + + "QSint--ActionBox QSint--ActionLabel[class='action']:on {" + "background-color: #ddeeff;" + "color: #006600;" + "}" + ; + + ui->ActionBox4->setStyleSheet(QString::fromAscii(ActionBoxNewStyle)); + + // setup ActionBox 5 + Gui::CommandManager &rcCmdMgr = Gui::Application::Instance->commandManager(); + ui->ActionBox5->setIcon(QPixmap(QString::fromAscii(":/icons/document-save.png"))); + ui->ActionBox5->header()->setText(QString::fromAscii("TaskGroup with different scheme")); + + rcCmdMgr.addTo("Std_New", ui->ActionBox5); + rcCmdMgr.addTo("Std_Open", ui->ActionBox5); + rcCmdMgr.addTo("Std_Save", ui->ActionBox5); + ui->ActionBox5->setStyleSheet(QString::fromAscii(ActionBoxNewStyle)); + } + { + Ui_TaskGroup* ui(new Ui_TaskGroup); + QWidget* page2 = new QWidget(); + ui->setupUi(page2); + tabWidget->addTab(page2, QLatin1String("Action Group")); + + this->actionGroup = ui->ActionPanel; + + // create ActionGroups on ActionPanel + QIcon save = QIcon::fromTheme(QString::fromLatin1("document-save")); + QSint::ActionGroup *group1 = ui->ActionPanel->createGroup(save.pixmap(24,24), QString::fromAscii("Expandable Group")); + group1->addAction(ui->actionNew); + group1->addAction(ui->actionLoad); + group1->addWidget(new QPushButton(QString::fromAscii("Just a button"), this)); + group1->addAction(ui->actionSave); + group1->addAction(ui->actionPrint); + group1->addWidget(new QPushButton(QString::fromAscii("Just another button"), this)); + + QIcon redo = QIcon::fromTheme(QString::fromLatin1("edit-redo")); + QSint::ActionGroup *group2 = ui->ActionPanel->createGroup(redo.pixmap(24,24), QString::fromAscii("Non-Expandable Group"), false); + group2->addAction(ui->actionNew); + group2->addAction(ui->actionLoad); + group2->addAction(ui->actionSave); + group2->addAction(ui->actionPrint); + + ui->ActionPanel->addWidget(new QLabel(QString::fromAscii("Action Group without header"), this)); + + QSint::ActionGroup *group3 = ui->ActionPanel->createGroup(); + group3->addAction(ui->actionNew); + + QHBoxLayout *hbl = new QHBoxLayout(); + group3->groupLayout()->addLayout(hbl); + hbl->addWidget(group3->addAction(ui->actionLoad, false)); + hbl->addWidget(group3->addAction(ui->actionSave, false)); + + group3->addAction(ui->actionPrint); + + ui->ActionPanel->addStretch(); + + + // setup standalone ActionGroup + + ui->ActionGroup1->setScheme(QSint::WinXPPanelScheme::defaultScheme()); + + ui->ActionGroup1->addWidget(ui->rbDefaultScheme); + ui->ActionGroup1->addWidget(ui->rbXPBlueScheme); + ui->ActionGroup1->addWidget(ui->rbXPBlue2Scheme); + ui->ActionGroup1->addWidget(ui->rbVistaScheme); + ui->ActionGroup1->addWidget(ui->rbMacScheme); + ui->ActionGroup1->addWidget(ui->rbAndroidScheme); + + Gui::ActionFunction* func = new Gui::ActionFunction(this); + + QAction* defaultAction = new QAction(this); + connect(ui->rbDefaultScheme, SIGNAL(toggled(bool)), defaultAction, SIGNAL(toggled(bool))); + func->toggle(defaultAction, boost::bind(&TaskPanelView::on_rbDefaultScheme_toggled, this, _1)); + + QAction* xpBlueAction = new QAction(this); + connect(ui->rbXPBlueScheme, SIGNAL(toggled(bool)), xpBlueAction, SIGNAL(toggled(bool))); + func->toggle(xpBlueAction, boost::bind(&TaskPanelView::on_rbXPBlueScheme_toggled, this, _1)); + + QAction* xpBlue2Action = new QAction(this); + connect(ui->rbXPBlue2Scheme, SIGNAL(toggled(bool)), xpBlue2Action, SIGNAL(toggled(bool))); + func->toggle(xpBlue2Action, boost::bind(&TaskPanelView::on_rbXPBlue2Scheme_toggled, this, _1)); + + QAction* vistaAction = new QAction(this); + connect(ui->rbVistaScheme, SIGNAL(toggled(bool)), vistaAction, SIGNAL(toggled(bool))); + func->toggle(vistaAction, boost::bind(&TaskPanelView::on_rbVistaScheme_toggled, this, _1)); + + QAction* macAction = new QAction(this); + connect(ui->rbMacScheme, SIGNAL(toggled(bool)), macAction, SIGNAL(toggled(bool))); + func->toggle(macAction, boost::bind(&TaskPanelView::on_rbMacScheme_toggled, this, _1)); + + QAction* androidAction = new QAction(this); + connect(ui->rbAndroidScheme, SIGNAL(toggled(bool)), androidAction, SIGNAL(toggled(bool))); + func->toggle(androidAction, boost::bind(&TaskPanelView::on_rbAndroidScheme_toggled, this, _1)); + } +#else + setWindowTitle(QLatin1String("Task View")); + + QGridLayout* gridLayout = new QGridLayout(this); + iisTaskPanel *taskPanel = new iisTaskPanel(this); + iisTaskBox *tb1 = new iisTaskBox( + QPixmap(QString::fromAscii(":/icons/document-save.svg")),QLatin1String("Expandable Group"),true, this); + taskPanel->addWidget(tb1); + gridLayout->addWidget(taskPanel, 0, 0, 2, 1); + + iisIconLabel *i1 = new iisIconLabel( + Gui::BitmapFactory().iconFromTheme("document-new"), QLatin1String("Create new file"), tb1); + tb1->addIconLabel(i1); + connect(i1, SIGNAL(activated()), action, SIGNAL(triggered())); + + iisIconLabel *i2 = new iisIconLabel( + Gui::BitmapFactory().iconFromTheme("document-open"), QLatin1String("Load a file"), tb1); + tb1->addIconLabel(i2); + connect(i2, SIGNAL(activated()), action, SIGNAL(triggered())); + + tb1->groupLayout()->addWidget(new QPushButton(QLatin1String("Just a button"), this)); + + iisIconLabel *i3 = new iisIconLabel( + Gui::BitmapFactory().iconFromTheme("document-save"), QLatin1String("Save current file"), tb1); + tb1->addIconLabel(i3); + + iisIconLabel *i4 = new iisIconLabel( + Gui::BitmapFactory().iconFromTheme("document-print"), QLatin1String("Print file contents"), tb1); + tb1->addIconLabel(i4); + i4->setColors(Qt::red, Qt::green, Qt::gray); + i4->setFocusPen(QPen()); + + tb1->groupLayout()->addWidget(new QPushButton(QLatin1String("Just another button"), this)); + + iisTaskBox *tb2 = new iisTaskBox( + Gui::BitmapFactory().pixmap("edit-redo"), QLatin1String("Non-expandable Group"), false, this); + taskPanel->addWidget(tb2); + + iisIconLabel *i21 = new iisIconLabel( + Gui::BitmapFactory().iconFromTheme("document-new"), QLatin1String("Create new file"), tb2); + tb2->addIconLabel(i21); + + iisIconLabel *i22 = new iisIconLabel( + Gui::BitmapFactory().iconFromTheme("document-open"), QLatin1String("Load a file"), tb2); + tb2->addIconLabel(i22); + + iisIconLabel *i23 = new iisIconLabel( + Gui::BitmapFactory().iconFromTheme("document-save"), QLatin1String("Save current file"), tb2); + tb2->addIconLabel(i23); + i23->setEnabled(false); + + iisIconLabel *i24 = new iisIconLabel( + Gui::BitmapFactory().iconFromTheme("document-print"), QLatin1String("Print file contents"), tb2); + tb2->addIconLabel(i24); + + + // Other widgets can be also added to the panel + QLabel *l1 = new QLabel(QLatin1String("Action Group without header"), this); + taskPanel->addWidget(l1); + + iisTaskGroup *tb3 = new iisTaskGroup(this); + taskPanel->addWidget(tb3); + + iisIconLabel *i31 = new iisIconLabel( + Gui::BitmapFactory().iconFromTheme("document-new"), QLatin1String("Create new file"), tb3); + tb3->addIconLabel(i31); + + QHBoxLayout *hb3 = new QHBoxLayout(); + tb3->groupLayout()->addLayout(hb3); + + iisIconLabel *i32 = new iisIconLabel( + Gui::BitmapFactory().iconFromTheme("document-open"), QLatin1String("Load a file"), tb3); + tb3->addIconLabel(i32); + hb3->addWidget(i32); + + iisIconLabel *i33 = new iisIconLabel( + Gui::BitmapFactory().iconFromTheme("document-save"), QLatin1String("Save current file"), tb3); + tb3->addIconLabel(i33); + i33->setDisabled(true); + hb3->addWidget(i33); + + iisIconLabel *i34 = new iisIconLabel( + Gui::BitmapFactory().iconFromTheme("document-print"), QLatin1String("Print file contents"), tb3); + tb3->addIconLabel(i34); + + taskPanel->addStretch(); + taskPanel->setScheme(iisWinXPTaskPanelScheme::defaultScheme()); + tb1->setScheme(iisWinXPTaskPanelScheme::defaultScheme()); + tb2->setScheme(iisWinXPTaskPanelScheme2::defaultScheme()); + tb3->setScheme(iisTaskPanelScheme::defaultScheme()); +#endif +} + +TaskPanelView::~TaskPanelView() +{ +} + +void TaskPanelView::executeAction() +{ + QMessageBox::about(0, QString::fromAscii("Action clicked"), QString::fromAscii("Do something here :)")); +} + +void TaskPanelView::on_rbDefaultScheme_toggled(bool b) +{ +#if defined(QSINT_ACTIONPANEL) + if (b) + static_cast(actionGroup)->setScheme(QSint::ActionPanelScheme::defaultScheme()); +#endif +} + +void TaskPanelView::on_rbXPBlueScheme_toggled(bool b) +{ +#if defined(QSINT_ACTIONPANEL) + if (b) + static_cast(actionGroup)->setScheme(QSint::WinXPPanelScheme::defaultScheme()); +#endif +} + +void TaskPanelView::on_rbXPBlue2Scheme_toggled(bool b) +{ +#if defined(QSINT_ACTIONPANEL) + if (b) + static_cast(actionGroup)->setScheme(QSint::WinXPPanelScheme2::defaultScheme()); +#endif +} + +void TaskPanelView::on_rbVistaScheme_toggled(bool b) +{ +#if defined(QSINT_ACTIONPANEL) + if (b) + static_cast(actionGroup)->setScheme(QSint::WinVistaPanelScheme::defaultScheme()); +#endif +} + +void TaskPanelView::on_rbMacScheme_toggled(bool b) +{ +#if defined(QSINT_ACTIONPANEL) + if (b) + static_cast(actionGroup)->setScheme(QSint::MacPanelScheme::defaultScheme()); +#endif +} + +void TaskPanelView::on_rbAndroidScheme_toggled(bool b) +{ +#if defined(QSINT_ACTIONPANEL) + if (b) + static_cast(actionGroup)->setScheme(QSint::AndroidPanelScheme::defaultScheme()); +#endif +} + +//#include "moc_TaskPanelView.cpp" diff --git a/src/Mod/Sandbox/Gui/TaskPanelView.h b/src/Mod/Sandbox/Gui/TaskPanelView.h new file mode 100644 index 000000000..f9934345d --- /dev/null +++ b/src/Mod/Sandbox/Gui/TaskPanelView.h @@ -0,0 +1,65 @@ +/*************************************************************************** + * Copyright (c) 2009 Jürgen Riegel * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library 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 Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + + + +#ifndef SANDBOXGUI_TASKPANELVIEW_H +#define SANDBOXGUI_TASKPANELVIEW_H + +#include + +namespace SandboxGui { + +/** A test class. A more elaborate class description. + */ +class TaskPanelView : public QWidget +{ + //Q_OBJECT + +public: + /** + * A constructor. + * A more elaborate description of the constructor. + */ + TaskPanelView(QWidget *parent=0); + + /** + * A destructor. + * A more elaborate description of the destructor. + */ + virtual ~TaskPanelView(); + + void executeAction(); + void on_rbDefaultScheme_toggled(bool b); + void on_rbXPBlueScheme_toggled(bool b); + void on_rbXPBlue2Scheme_toggled(bool b); + void on_rbVistaScheme_toggled(bool b); + void on_rbMacScheme_toggled(bool b); + void on_rbAndroidScheme_toggled(bool b); + +private: + QWidget* actionGroup; +}; + +} // namespace SandboxGui + +#endif // SANDBOXGUI_TASKPANELVIEW_H diff --git a/src/Mod/Sandbox/Gui/Workbench.cpp b/src/Mod/Sandbox/Gui/Workbench.cpp index f27ae91a3..8b19e06f2 100644 --- a/src/Mod/Sandbox/Gui/Workbench.cpp +++ b/src/Mod/Sandbox/Gui/Workbench.cpp @@ -106,7 +106,8 @@ Gui::MenuItem* Workbench::setupMenuBar() const << "Sandbox_WidgetShape" << "Sandbox_GDIWidget" << "Sandbox_RedirectPaint" - << "Std_TestGraphicsView"; + << "Std_TestGraphicsView" + << "Std_TestTaskBox"; return root; }