You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdesdk/umbrello/umbrello/dialogs/classoptionspage.cpp

196 lines
7.6 KiB

/***************************************************************************
* *
* This program 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. *
* *
* copyright (C) 2002-2007 *
* Umbrello UML Modeller Authors <uml-devel@uml.sf.net> *
***************************************************************************/
// own header
#include "classoptionspage.h"
// qt/kde includes
#include <tqlayout.h>
#include <tdelocale.h>
#include <kdebug.h>
// local includes
#include "../umlview.h"
#include "../classifierwidget.h"
ClassOptionsPage::ClassOptionsPage(TQWidget* pParent, ClassifierWidget* pWidget)
: TQWidget( pParent ) {
init();
//Uml::Widget_Type type = pWidget->getBaseType();
m_pWidget = pWidget;
setupPage();
}
ClassOptionsPage::ClassOptionsPage(TQWidget* pParent, Settings::OptionState *options) : TQWidget( pParent )
{
init();
m_options = options;
setupClassPageOption();
}
void ClassOptionsPage::init() {
m_options = NULL;
m_pWidget = NULL;
m_pShowStereotypeCB = NULL;
m_pShowAttsCB = NULL;
m_pShowAttSigCB = NULL;
m_pDrawAsCircleCB = NULL;
}
ClassOptionsPage::~ClassOptionsPage() {}
void ClassOptionsPage::setupPage() {
int margin = fontMetrics().height();
bool sig = false;
Uml::Signature_Type sigtype;
TQVBoxLayout * topLayout = new TQVBoxLayout(this);
topLayout -> setSpacing(6);
m_pVisibilityGB = new TQGroupBox(i18n("Show"), this);
topLayout -> addWidget(m_pVisibilityGB);
TQGridLayout * visibilityLayout = new TQGridLayout(m_pVisibilityGB);
visibilityLayout -> setSpacing(10);
visibilityLayout -> setMargin(margin);
visibilityLayout -> setRowStretch(3, 1);
m_pShowOpsCB = new TQCheckBox(i18n("Operatio&ns"), m_pVisibilityGB);
m_pShowOpsCB -> setChecked(m_pWidget -> getShowOps());
visibilityLayout -> addWidget(m_pShowOpsCB, 0, 0);
m_pShowVisibilityCB = new TQCheckBox(i18n("&Visibility"), m_pVisibilityGB);
m_pShowVisibilityCB -> setChecked(m_pWidget -> getShowVisibility());
visibilityLayout -> addWidget(m_pShowVisibilityCB, 0, 1);
sigtype = m_pWidget -> getShowOpSigs();
if(sigtype == Uml::st_NoSig || sigtype == Uml::st_NoSigNoVis)
sig = false;
else
sig = true;
m_pShowOpSigCB = new TQCheckBox(i18n("O&peration signature"), m_pVisibilityGB);
m_pShowOpSigCB -> setChecked(sig);
visibilityLayout -> addWidget(m_pShowOpSigCB, 1, 0);
m_pShowPackageCB = new TQCheckBox(i18n("Pac&kage"), m_pVisibilityGB);
m_pShowPackageCB -> setChecked(m_pWidget -> getShowPackage());
visibilityLayout -> addWidget(m_pShowPackageCB, 1, 1);
Uml::Widget_Type type = m_pWidget->getBaseType();
if (type == Uml::wt_Class) {
m_pShowAttsCB = new TQCheckBox(i18n("Att&ributes"), m_pVisibilityGB);
m_pShowAttsCB->setChecked(m_pWidget->getShowAtts());
visibilityLayout->addWidget(m_pShowAttsCB, 2, 0);
m_pShowStereotypeCB = new TQCheckBox(i18n("Stereot&ype"), m_pVisibilityGB);
m_pShowStereotypeCB->setChecked(m_pWidget->getShowStereotype());
visibilityLayout->addWidget(m_pShowStereotypeCB, 2, 1);
m_pShowAttSigCB = new TQCheckBox(i18n("Attr&ibute signature"), m_pVisibilityGB);
sigtype = m_pWidget->getShowAttSigs();
if(sigtype == Uml::st_NoSig || sigtype == Uml::st_NoSigNoVis)
sig = false;
else
sig = true;
m_pShowAttSigCB->setChecked(sig);
visibilityLayout->addWidget(m_pShowAttSigCB, 3, 0);
} else if (type == Uml::wt_Interface) {
m_pDrawAsCircleCB = new TQCheckBox(i18n("Draw as circle"), m_pVisibilityGB);
m_pDrawAsCircleCB->setChecked( m_pWidget->getDrawAsCircle() );
visibilityLayout->addWidget(m_pDrawAsCircleCB, 2, 0);
}
}
void ClassOptionsPage::setupClassPageOption() {
int margin = fontMetrics().height();
TQVBoxLayout * topLayout = new TQVBoxLayout(this);
topLayout -> setSpacing(6);
m_pVisibilityGB = new TQGroupBox(i18n("Show"), this);
topLayout -> addWidget(m_pVisibilityGB);
TQGridLayout * visibilityLayout = new TQGridLayout(m_pVisibilityGB);
visibilityLayout -> setSpacing(10);
visibilityLayout -> setMargin(margin);
m_pShowOpsCB = new TQCheckBox(i18n("Operatio&ns"), m_pVisibilityGB);
m_pShowOpsCB -> setChecked( m_options->classState.showOps );
visibilityLayout -> addWidget(m_pShowOpsCB, 0, 0);
m_pShowOpSigCB = new TQCheckBox(i18n("O&peration signature"), m_pVisibilityGB);
m_pShowOpSigCB -> setChecked(m_options->classState.showOpSig);
visibilityLayout -> addWidget(m_pShowOpSigCB, 1, 0);
visibilityLayout -> setRowStretch(3, 1);
m_pShowAttsCB = new TQCheckBox(i18n("Att&ributes"), m_pVisibilityGB);
m_pShowAttsCB -> setChecked(m_options->classState.showAtts );
visibilityLayout -> addWidget(m_pShowAttsCB, 2, 0);
m_pShowAttSigCB = new TQCheckBox(i18n("Attr&ibute signature"), m_pVisibilityGB);
m_pShowAttSigCB -> setChecked(m_options->classState.showAttSig);
visibilityLayout -> addWidget(m_pShowAttSigCB, 3, 0);
m_pShowVisibilityCB = new TQCheckBox(i18n("&Visibility"), m_pVisibilityGB);
m_pShowVisibilityCB -> setChecked(m_options->classState.showVisibility);
visibilityLayout -> addWidget(m_pShowVisibilityCB, 0, 1);
m_pShowPackageCB = new TQCheckBox(i18n("Pac&kage"), m_pVisibilityGB);
m_pShowPackageCB -> setChecked(m_options->classState.showPackage);
visibilityLayout -> addWidget(m_pShowPackageCB, 1, 1);
m_pShowStereotypeCB = new TQCheckBox(i18n("Stereot&ype"), m_pVisibilityGB);
m_pShowStereotypeCB -> setChecked(m_options->classState.showStereoType);
visibilityLayout -> addWidget(m_pShowStereotypeCB, 2, 1);
}
void ClassOptionsPage::updateUMLWidget() {
if (m_pWidget) {
updateWidget();
} else if (m_options) {
updateOptionState();
}
}
void ClassOptionsPage::updateWidget() {
m_pWidget->setShowPackage( m_pShowPackageCB->isChecked() );
m_pWidget->setShowVisibility( m_pShowVisibilityCB->isChecked() );
m_pWidget->setShowOps( m_pShowOpsCB->isChecked() );
m_pWidget->setShowOpSigs( m_pShowOpSigCB->isChecked() );
Uml::Widget_Type type = m_pWidget->getBaseType();
if (type == Uml::wt_Class) {
m_pWidget->setShowStereotype( m_pShowStereotypeCB->isChecked() );
m_pWidget->setShowAtts( m_pShowAttsCB->isChecked() );
m_pWidget->setShowAttSigs( m_pShowAttSigCB->isChecked() );
} else if (type == Uml::wt_Interface) {
if (m_pDrawAsCircleCB)
m_pWidget->setDrawAsCircle( m_pDrawAsCircleCB->isChecked() );
}
}
void ClassOptionsPage::updateOptionState() {
m_options->classState.showVisibility = m_pShowVisibilityCB->isChecked();
if (m_pShowAttsCB)
m_options->classState.showAtts = m_pShowAttsCB->isChecked();
m_options->classState.showOps = m_pShowOpsCB->isChecked();
if (m_pShowStereotypeCB)
m_options->classState.showStereoType = m_pShowStereotypeCB->isChecked();
m_options->classState.showPackage = m_pShowPackageCB->isChecked();
if (m_pShowAttSigCB)
m_options->classState.showAttSig = m_pShowAttSigCB->isChecked();
m_options->classState.showOpSig = m_pShowOpSigCB->isChecked();
}
//#include "classoptionspage.moc"