00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #include "classoptionspage.h"
00014
00015
00016 #include <qlayout.h>
00017 #include <klocale.h>
00018 #include <kdebug.h>
00019
00020
00021 #include "../umlview.h"
00022 #include "../classifierwidget.h"
00023
00024
00025 ClassOptionsPage::ClassOptionsPage(QWidget* pParent, ClassifierWidget* pWidget)
00026 : QWidget( pParent ) {
00027 init();
00028
00029 m_pWidget = pWidget;
00030 setupPage();
00031 }
00032
00033 ClassOptionsPage::ClassOptionsPage(QWidget* pParent, Settings::OptionState *options) : QWidget( pParent )
00034 {
00035 init();
00036 m_options = options;
00037 setupClassPageOption();
00038 }
00039
00040 void ClassOptionsPage::init() {
00041 m_options = NULL;
00042 m_pWidget = NULL;
00043 m_pShowStereotypeCB = NULL;
00044 m_pShowAttsCB = NULL;
00045 m_pShowAttSigCB = NULL;
00046 m_pDrawAsCircleCB = NULL;
00047 }
00048
00049 ClassOptionsPage::~ClassOptionsPage() {}
00050
00051 void ClassOptionsPage::setupPage() {
00052 int margin = fontMetrics().height();
00053
00054 bool sig = false;
00055 Uml::Signature_Type sigtype;
00056
00057 QVBoxLayout * topLayout = new QVBoxLayout(this);
00058 topLayout -> setSpacing(6);
00059 m_pVisibilityGB = new QGroupBox(i18n("Show"), this);
00060 topLayout -> addWidget(m_pVisibilityGB);
00061 QGridLayout * visibilityLayout = new QGridLayout(m_pVisibilityGB);
00062 visibilityLayout -> setSpacing(10);
00063 visibilityLayout -> setMargin(margin);
00064 visibilityLayout -> setRowStretch(3, 1);
00065
00066 m_pShowOpsCB = new QCheckBox(i18n("Operatio&ns"), m_pVisibilityGB);
00067 m_pShowOpsCB -> setChecked(m_pWidget -> getShowOps());
00068 visibilityLayout -> addWidget(m_pShowOpsCB, 0, 0);
00069
00070 m_pShowVisibilityCB = new QCheckBox(i18n("&Visibility"), m_pVisibilityGB);
00071 m_pShowVisibilityCB -> setChecked(m_pWidget -> getShowVisibility());
00072 visibilityLayout -> addWidget(m_pShowVisibilityCB, 0, 1);
00073
00074 sigtype = m_pWidget -> getShowOpSigs();
00075 if(sigtype == Uml::st_NoSig || sigtype == Uml::st_NoSigNoVis)
00076 sig = false;
00077 else
00078 sig = true;
00079 m_pShowOpSigCB = new QCheckBox(i18n("O&peration signature"), m_pVisibilityGB);
00080 m_pShowOpSigCB -> setChecked(sig);
00081 visibilityLayout -> addWidget(m_pShowOpSigCB, 1, 0);
00082
00083 m_pShowPackageCB = new QCheckBox(i18n("Pac&kage"), m_pVisibilityGB);
00084 m_pShowPackageCB -> setChecked(m_pWidget -> getShowPackage());
00085 visibilityLayout -> addWidget(m_pShowPackageCB, 1, 1);
00086
00087 Uml::Widget_Type type = m_pWidget->getBaseType();
00088
00089 if (type == Uml::wt_Class) {
00090 m_pShowAttsCB = new QCheckBox(i18n("Att&ributes"), m_pVisibilityGB);
00091 m_pShowAttsCB->setChecked(m_pWidget->getShowAtts());
00092 visibilityLayout->addWidget(m_pShowAttsCB, 2, 0);
00093
00094 m_pShowStereotypeCB = new QCheckBox(i18n("Stereot&ype"), m_pVisibilityGB);
00095 m_pShowStereotypeCB->setChecked(m_pWidget->getShowStereotype());
00096 visibilityLayout->addWidget(m_pShowStereotypeCB, 2, 1);
00097
00098 m_pShowAttSigCB = new QCheckBox(i18n("Attr&ibute signature"), m_pVisibilityGB);
00099 sigtype = m_pWidget->getShowAttSigs();
00100 if(sigtype == Uml::st_NoSig || sigtype == Uml::st_NoSigNoVis)
00101 sig = false;
00102 else
00103 sig = true;
00104 m_pShowAttSigCB->setChecked(sig);
00105 visibilityLayout->addWidget(m_pShowAttSigCB, 3, 0);
00106
00107 } else if (type == Uml::wt_Interface) {
00108 m_pDrawAsCircleCB = new QCheckBox(i18n("Draw as circle"), m_pVisibilityGB);
00109 m_pDrawAsCircleCB->setChecked( m_pWidget->getDrawAsCircle() );
00110 visibilityLayout->addWidget(m_pDrawAsCircleCB, 2, 0);
00111 }
00112 }
00113
00114 void ClassOptionsPage::setupClassPageOption() {
00115
00116 int margin = fontMetrics().height();
00117
00118 QVBoxLayout * topLayout = new QVBoxLayout(this);
00119 topLayout -> setSpacing(6);
00120 m_pVisibilityGB = new QGroupBox(i18n("Show"), this);
00121 topLayout -> addWidget(m_pVisibilityGB);
00122 QGridLayout * visibilityLayout = new QGridLayout(m_pVisibilityGB);
00123 visibilityLayout -> setSpacing(10);
00124 visibilityLayout -> setMargin(margin);
00125
00126 m_pShowOpsCB = new QCheckBox(i18n("Operatio&ns"), m_pVisibilityGB);
00127 m_pShowOpsCB -> setChecked( m_options->classState.showOps );
00128 visibilityLayout -> addWidget(m_pShowOpsCB, 0, 0);
00129
00130 m_pShowOpSigCB = new QCheckBox(i18n("O&peration signature"), m_pVisibilityGB);
00131 m_pShowOpSigCB -> setChecked(m_options->classState.showOpSig);
00132 visibilityLayout -> addWidget(m_pShowOpSigCB, 1, 0);
00133 visibilityLayout -> setRowStretch(3, 1);
00134
00135 m_pShowAttsCB = new QCheckBox(i18n("Att&ributes"), m_pVisibilityGB);
00136 m_pShowAttsCB -> setChecked(m_options->classState.showAtts );
00137 visibilityLayout -> addWidget(m_pShowAttsCB, 2, 0);
00138
00139 m_pShowAttSigCB = new QCheckBox(i18n("Attr&ibute signature"), m_pVisibilityGB);
00140 m_pShowAttSigCB -> setChecked(m_options->classState.showAttSig);
00141 visibilityLayout -> addWidget(m_pShowAttSigCB, 3, 0);
00142
00143 m_pShowVisibilityCB = new QCheckBox(i18n("&Visibility"), m_pVisibilityGB);
00144 m_pShowVisibilityCB -> setChecked(m_options->classState.showVisibility);
00145 visibilityLayout -> addWidget(m_pShowVisibilityCB, 0, 1);
00146
00147 m_pShowPackageCB = new QCheckBox(i18n("Pac&kage"), m_pVisibilityGB);
00148 m_pShowPackageCB -> setChecked(m_options->classState.showPackage);
00149 visibilityLayout -> addWidget(m_pShowPackageCB, 1, 1);
00150
00151 m_pShowStereotypeCB = new QCheckBox(i18n("Stereot&ype"), m_pVisibilityGB);
00152 m_pShowStereotypeCB -> setChecked(m_options->classState.showStereoType);
00153 visibilityLayout -> addWidget(m_pShowStereotypeCB, 2, 1);
00154
00155 }
00156
00157 void ClassOptionsPage::updateUMLWidget() {
00158 if (m_pWidget) {
00159 updateWidget();
00160 } else if (m_options) {
00161 updateOptionState();
00162 }
00163 }
00164
00165 void ClassOptionsPage::updateWidget() {
00166 m_pWidget->setShowPackage( m_pShowPackageCB->isChecked() );
00167 m_pWidget->setShowVisibility( m_pShowVisibilityCB->isChecked() );
00168 m_pWidget->setShowOps( m_pShowOpsCB->isChecked() );
00169 m_pWidget->setShowOpSigs( m_pShowOpSigCB->isChecked() );
00170 Uml::Widget_Type type = m_pWidget->getBaseType();
00171 if (type == Uml::wt_Class) {
00172 m_pWidget->setShowStereotype( m_pShowStereotypeCB->isChecked() );
00173 m_pWidget->setShowAtts( m_pShowAttsCB->isChecked() );
00174 m_pWidget->setShowAttSigs( m_pShowAttSigCB->isChecked() );
00175 } else if (type == Uml::wt_Interface) {
00176 if (m_pDrawAsCircleCB)
00177 m_pWidget->setDrawAsCircle( m_pDrawAsCircleCB->isChecked() );
00178 }
00179 }
00180
00181 void ClassOptionsPage::updateOptionState() {
00182 m_options->classState.showVisibility = m_pShowVisibilityCB->isChecked();
00183 if (m_pShowAttsCB)
00184 m_options->classState.showAtts = m_pShowAttsCB->isChecked();
00185 m_options->classState.showOps = m_pShowOpsCB->isChecked();
00186 if (m_pShowStereotypeCB)
00187 m_options->classState.showStereoType = m_pShowStereotypeCB->isChecked();
00188 m_options->classState.showPackage = m_pShowPackageCB->isChecked();
00189 if (m_pShowAttSigCB)
00190 m_options->classState.showAttSig = m_pShowAttSigCB->isChecked();
00191 m_options->classState.showOpSig = m_pShowOpSigCB->isChecked();
00192 }
00193
00194
00195