void ComponentDialog::init_l_tab(VVBox *& page, QComboBox *& stereotypefilter, void (ComponentDialog::* filteractivated)(const QString & st), const char * slt, const char * add_slt, const char * remove_slt, QListWidget *& lb_available, QListWidget *& lb, const QList<BrowserClass *> & cls, QString lbl) { bool visit = !hasOkButton(); HHBox * hbox; VVBox * vbox; QPushButton * button; QLabel* label; page = new VVBox(this); if (!visit) { page->addWidget(hbox = new HHBox(page)); hbox->setMargin(5); hbox->addWidget(new QLabel(tr("Stereotype filtering "), hbox)); hbox->addWidget(stereotypefilter = new QComboBox(hbox)); stereotypefilter->setEditable(true); stereotypefilter->setAutoCompletion(completion()); stereotypefilter->addItem(""); stereotypefilter->addItems(BrowserClass::default_stereotypes()); stereotypefilter->addItems(ProfiledStereotypes::defaults(UmlComponent)); stereotypefilter->setCurrentIndex(0); QSizePolicy sp = stereotypefilter->sizePolicy(); sp.setHorizontalPolicy(QSizePolicy::Expanding); stereotypefilter->setSizePolicy(sp); connect(stereotypefilter, SIGNAL(activated(const QString &)), this, slt); page->addWidget(hbox = new HHBox(page)); hbox->addWidget(vbox = new VVBox(hbox)); vbox->setMargin(5); (label = new QLabel(tr("Available classes"), vbox))->setAlignment(Qt::AlignCenter); vbox->addWidget(label); vbox->addWidget(lb_available = new QListWidget(vbox)); lb_available->setSelectionMode(QListWidget::MultiSelection); hbox->addWidget(vbox = new VVBox(hbox)); vbox->setMargin(5); (label = new QLabel("", vbox))->setScaledContents(TRUE); vbox->addWidget(label); vbox->addWidget(button = new QPushButton(vbox)); button->setIcon(*rightPixmap); connect(button, SIGNAL(clicked()), this, add_slt); (label = new QLabel("", vbox))->setScaledContents(TRUE); vbox->addWidget(label); vbox->addWidget(button = new QPushButton(vbox)); button->setIcon(*leftPixmap); connect(button, SIGNAL(clicked()), this, remove_slt); (label = new QLabel("", vbox))->setScaledContents(TRUE); vbox->addWidget(label); hbox->addWidget(vbox = new VVBox(hbox)); }
ParameterDialog::ParameterDialog(ParameterData * pa) : TabDialog(0, 0, true, Qt::WA_DeleteOnClose), param(pa) { pa->browser_node->edit_start(); if (pa->browser_node->is_writable()) { setOkButton(tr("OK")); setCancelButton(tr("Cancel")); } else { setOkButton(QString()); setCancelButton(tr("Close")); } visit = !hasOkButton(); setWindowTitle(tr("Parameter dialog")); GridBox * grid; HHBox * htab; QString s; // general tab grid = new GridBox(2, this); umltab = grid; grid->setMargin(5); grid->setSpacing(5); grid->addWidget(new QLabel(tr("name :"), grid)); grid->addWidget(edname = new LineEdit(pa->name(), grid)); edname->setReadOnly(visit); QFont font = edname->font(); if (! hasCodec()) font.setFamily("Courier"); font.setFixedPitch(TRUE); grid->addWidget(new QLabel(tr("stereotype : "), grid)); grid->addWidget(edstereotype = new QComboBox(grid)); edstereotype->setEditable(!visit); edstereotype->addItem(toUnicode(pa->stereotype)); if (! visit) { edstereotype->addItems(BrowserParameter::default_stereotypes()); edstereotype->addItems(ProfiledStereotypes::defaults(UmlParameter)); edstereotype->setAutoCompletion(completion()); } edstereotype->setCurrentIndex(0); QSizePolicy sp = edstereotype->sizePolicy(); sp.setHorizontalPolicy(QSizePolicy::Expanding); edstereotype->setSizePolicy(sp); SmallPushButton* sButton; connect(sButton = new SmallPushButton(tr("type :"), grid), SIGNAL(clicked()), this, SLOT(menu_type())); grid->addWidget(sButton); grid->addWidget(edtype = new QComboBox( grid)); edtype->setEditable(!visit); edtype->addItem(pa->get_type().get_full_type()); if (!visit) { BrowserClass::instances(nodes); nodes.full_names(list); edtype->addItems(GenerationSettings::basic_types()); offset = edtype->count(); edtype->addItems(list); edtype->setAutoCompletion(completion()); view = pa->browser_node->container(UmlClass); } edtype->setCurrentIndex(0); edtype->setSizePolicy(sp); grid->addWidget(new QLabel(tr("direction :"), grid)); grid->addWidget(htab = new HHBox(grid)); htab->addWidget(eddir = new QComboBox(htab)); UmlParamDirection dir = pa->get_dir(); eddir->addItem(stringify(dir)); if (! visit) { if (dir != UmlInOut) eddir->addItem(stringify(UmlInOut)); if (dir != UmlIn) eddir->addItem(stringify(UmlIn)); if (dir != UmlOut) eddir->addItem(stringify(UmlOut)); if (dir != UmlReturn) eddir->addItem(stringify(UmlReturn)); } htab->addWidget(new QLabel(tr(" multiplicity : "), htab)); htab->addWidget( edmultiplicity = new QComboBox(htab)); edmultiplicity->setEditable(!visit); edmultiplicity->setSizePolicy(sp); edmultiplicity->addItem(pa->get_multiplicity()); if (!visit) { edmultiplicity->addItem("1"); edmultiplicity->addItem("0..1"); edmultiplicity->addItem("*"); edmultiplicity->addItem("1..*"); } htab->addWidget(new QLabel(tr(" ordering : "), htab)); htab->addWidget(edordering = new QComboBox(htab)); UmlOrderingKind o = pa->get_ordering(); edordering->addItem(stringify(o)); if (!visit) { if (o != UmlUnordered) edordering->addItem(stringify(UmlUnordered)); if (o != UmlOrdered) edordering->addItem(stringify(UmlOrdered)); if (o != UmlLifo) edordering->addItem(stringify(UmlLifo)); if (o != UmlFifo) edordering->addItem(stringify(UmlFifo)); } htab->addWidget(new QLabel(tr(" effect : "), htab)); htab->addWidget(edeffect = new QComboBox(htab)); UmlParamEffect e = pa->get_effect(); edeffect->addItem(stringify(e)); if (!visit) { if (e != UmlNoEffect) edeffect->addItem(stringify(UmlNoEffect)); if (e != UmlCreate) edeffect->addItem(stringify(UmlCreate)); if (e != UmlRead) edeffect->addItem(stringify(UmlRead)); if (e != UmlUpdate) edeffect->addItem(stringify(UmlUpdate)); if (e != UmlDelete) edeffect->addItem(stringify(UmlDelete)); } grid->addWidget(new QLabel(tr("in state : "), grid)); grid->addWidget(edin_state = new LineEdit(pa->in_state, grid)); edin_state->setReadOnly(visit); grid->addWidget(new QLabel(tr("default value :"), grid)); grid->addWidget(htab = new HHBox(grid)); htab->addWidget(edinit = new LineEdit(pa->get_default_value(), htab)); if (visit) { edinit->setReadOnly(TRUE); } else { connect(sButton = new SmallPushButton(tr("Editor"), htab), SIGNAL(clicked()), this, SLOT(edit_init())); htab->addWidget(sButton); } grid->addWidget(new QLabel(grid)); grid->addWidget(htab = new HHBox(grid)); BButtonGroup * bg ; htab->addWidget( bg = new BButtonGroup(2, Qt::Horizontal, QString(), htab)); bg->addWidget(is_control_cb = new QCheckBox(tr("is_control"), bg)); if (pa->is_control) is_control_cb->setChecked(TRUE); is_control_cb->setDisabled(visit); bg->addWidget(unique_cb = new QCheckBox(tr("unique"), bg)); if (pa->unique) unique_cb->setChecked(TRUE); unique_cb->setDisabled(visit); htab->addWidget(bg = new BButtonGroup(3, Qt::Horizontal, QString(), htab)); bg->setExclusive(TRUE); bg->addWidget(standard_rb = new QRadioButton(tr("standard"), bg)); bg->addWidget(exception_rb = new QRadioButton(tr("exception"), bg)); bg->addWidget(stream_rb = new QRadioButton(tr("stream"), bg)); if (pa->exception) exception_rb->setChecked(TRUE); else if (pa->stream) stream_rb->setChecked(TRUE); else standard_rb->setChecked(TRUE); VVBox * vtab; grid->addWidget(vtab = new VVBox(grid)); vtab->addWidget(new QLabel(tr("description :"), vtab)); if (! visit) { connect(sButton = new SmallPushButton(tr("Editor"), vtab), SIGNAL(clicked()), this, SLOT(edit_description())); vtab->addWidget(sButton); } grid->addWidget(comment = new MultiLineEdit(grid)); comment->setReadOnly(visit); comment->setText(pa->browser_node->get_comment()); comment->setFont(font); addTab(grid, "Uml"); init_tab(ocltab, eduml_selection, pa->uml_selection, "Ocl", SLOT(edit_uml_selection()), TRUE); // C++ init_tab(cppTab, edcpp_selection, pa->cpp_selection, "C++", SLOT(edit_cpp_selection()), GenerationSettings::cpp_get_default_defs()); // Java init_tab(javatab, edjava_selection, pa->java_selection, "Java", SLOT(edit_java_selection()), GenerationSettings::java_get_default_defs()); // USER : list key - value grid = new GridBox(2, this); grid->setMargin(5); grid->setSpacing(5); grid->addWidget(kvtable = new KeyValuesTable(pa->browser_node, grid, visit)); addTab(grid, tr("Properties")); // connect(this, SIGNAL(currentChanged(QWidget *)), this, SLOT(change_tabs(QWidget *))); open_dialog(this); }
ExpansionRegionDialog::ExpansionRegionDialog(ExpansionRegionData * nd) : TabDialog(0, 0, FALSE, Qt::WA_DeleteOnClose), data(nd) { nd->browser_node->edit_start(); if (nd->browser_node->is_writable()) { setOkButton(TR("OK")); setCancelButton(TR("Cancel")); } else { setOkButton(QString()); setCancelButton(TR("Close")); } setWindowTitle(TR("Expansion Region dialog")); bool visit = !hasOkButton(); // general tab BrowserNode * bn = data->get_browser_node(); GridBox * grid = new GridBox(2, this); umltab = grid; grid->setMargin(5); grid->setSpacing(5); grid->addWidget(new QLabel(TR("name : "), grid)); grid->addWidget(edname = new LineEdit(bn->get_name(), grid)); edname->setReadOnly(visit); grid->addWidget(new QLabel(TR("stereotype : "), grid)); grid->addWidget(edstereotype = new QComboBox(grid)); edstereotype->setEditable(!visit); edstereotype->addItem(toUnicode(data->get_stereotype())); if (! visit) { edstereotype->addItems(BrowserExpansionRegion::default_stereotypes()); edstereotype->addItems(ProfiledStereotypes::defaults(UmlExpansionRegion)); edstereotype->setAutoCompletion(completion()); } edstereotype->setCurrentIndex(0); QSizePolicy sp = edstereotype->sizePolicy(); sp.setHorizontalPolicy(QSizePolicy::Expanding); edstereotype->setSizePolicy(sp); HHBox * htab; grid->addWidget(new QLabel(TR("mode :"), grid)); grid->addWidget(htab = new HHBox(grid)); htab->addWidget(edmode = new QComboBox(htab)); UmlExpansionKind m = data->get_mode(); edmode->addItem(stringify(m)); if (! visit) { if (m != UmlParallel) edmode->addItem(stringify(UmlParallel)); if (m != UmlIterative) edmode->addItem(stringify(UmlIterative)); if (m != UmlStream) edmode->addItem(stringify(UmlStream)); } htab->addWidget(new QLabel(" ", htab)); htab->addWidget(must_isolate_cb = new QCheckBox(TR("must isolate"), htab)); if (data->must_isolate) must_isolate_cb->setChecked(TRUE); must_isolate_cb->setDisabled(visit); htab->addWidget(new QLabel("", htab)); VVBox * vtab; grid->addWidget(vtab = new VVBox(grid)); vtab->addWidget(new QLabel(TR("description :"), vtab)); SmallPushButton* b; if (! visit) { connect(b = new SmallPushButton(TR("Editor"), vtab), SIGNAL(clicked()), this, SLOT(edit_description())); vtab->addWidget(b); } grid->addWidget(comment = new MultiLineEdit(grid)); comment->setReadOnly(visit); comment->setText(bn->get_comment()); QFont font = comment->font(); if (! hasCodec()) font.setFamily("Courier"); font.setFixedPitch(TRUE); comment->setFont(font); addTab(grid, "Uml"); // USER : list key - value grid = new GridBox(2, this); grid->setMargin(5); grid->setSpacing(5); grid->addWidget(kvtable = new KeyValuesTable(bn, grid, visit)); addTab(grid, TR("Properties")); // connect(this, SIGNAL(currentChanged(QWidget *)), this, SLOT(change_tabs(QWidget *))); open_dialog(this); }
Dialog::Dialog() : QDialog(0) { setModal(true); QVBoxLayout * vbox = new QVBoxLayout(this); VGridBox * gbox; BButtonGroup * bg; HHBox * htab; vbox->setMargin(5); gbox = new VGridBox(10,this,"Filters"); vbox->addWidget(gbox); gbox->addWidget(htab = new HHBox(gbox)); //htab->setMargin(5); htab->addWidget(new QLabel("filter 1 : ", htab)); htab->addWidget(filter1_le = new LineEdit(htab)); htab->addWidget(new QLabel(" ", htab)); htab->addWidget(bg = new BButtonGroup(htab)); //bg->setRadioButtonExclusive(TRUE); bg->addWidget(with1_rb = new QRadioButton("with", bg)); bg->addWidget(new QRadioButton("without", bg)); with1_rb->setChecked(TRUE); // gbox->addWidget(htab = new HHBox(gbox)); //htab->setMargin(5); htab->addWidget(new QLabel("", htab)); htab->addWidget(bg = new BButtonGroup(htab)); //bg->setRadioButtonExclusive(TRUE); bg->addWidget(and12_rb = new QRadioButton("and", bg)); bg->addWidget(new QRadioButton("or", bg)); and12_rb->setChecked(TRUE); htab->addWidget(new QLabel("", htab)); // gbox->addWidget(htab = new HHBox(gbox)); //htab->setMargin(5); htab->addWidget(new QLabel("filter 2 : ", htab)); htab->addWidget(filter2_le = new LineEdit(htab)); htab->addWidget(new QLabel(" ", htab)); htab->addWidget(bg = new BButtonGroup(htab)); //bg->setRadioButtonExclusive(TRUE); bg->addWidget(with2_rb = new QRadioButton("with", bg)); bg->addWidget(new QRadioButton("without", bg)); with2_rb->setChecked(TRUE); // gbox->addWidget(htab = new HHBox(gbox)); //htab->setMargin(5); htab->addWidget(new QLabel("", htab)); htab->addWidget(bg = new BButtonGroup(htab)); //bg->setRadioButtonExclusive(TRUE); bg->addWidget(and23_rb = new QRadioButton("and", bg)); bg->addWidget(new QRadioButton("or", bg)); and23_rb->setChecked(TRUE); htab->addWidget(new QLabel("", htab)); // gbox->addWidget(htab = new HHBox(gbox)); //htab->setMargin(5); htab->addWidget(new QLabel("filter 3 : ", htab)); htab->addWidget(filter3_le = new LineEdit(htab)); htab->addWidget(new QLabel(" ", htab)); htab->addWidget(bg = new BButtonGroup(htab)); //bg->setRadioButtonExclusive(TRUE); bg->addWidget(with3_rb = new QRadioButton("with", bg)); bg->addWidget(new QRadioButton("without", bg)); with3_rb->setChecked(TRUE); // // gbox = new VGridBox(2,this,"Stereotype" ); vbox->addWidget(gbox); gbox->addWidget(htab = new HHBox(gbox)); //htab->setMargin(5); htab->addWidget(bg = new BButtonGroup(htab)); //bg->setRadioButtonExclusive(TRUE); bg->addWidget(any_rb = new QRadioButton("any", bg)); bg->addWidget(is_rb = new QRadioButton("is", bg)); bg->addWidget(isnot_rb = new QRadioButton("is not", bg)); any_rb->setChecked(TRUE); htab->addWidget(stereotype_le = new QLineEdit(htab)); // // gbox = new VGridBox(2,this,"Targets" ); vbox->addWidget(gbox); gbox->addWidget(htab = new HHBox(gbox)); //htab->setMargin(5); htab->addWidget(artifact_cb = new QCheckBox("artifact", htab)); htab->addWidget(class_cb = new QCheckBox("class", htab)); htab->addWidget(operation_cb = new QCheckBox("operation", htab)); htab->addWidget(attribute_cb = new QCheckBox("attribute", htab)); htab->addWidget(relation_cb = new QCheckBox("relation", htab)); // // gbox = new VGridBox(2,this,"Languages"); vbox->addWidget(gbox); gbox->addWidget(htab = new HHBox(gbox)); //htab->setMargin(5); htab->addWidget(cpp_cb = new QCheckBox("C++", htab)); htab->addWidget(java_cb = new QCheckBox("Java", htab)); htab->addWidget(php_cb = new QCheckBox("Php", htab)); htab->addWidget(python_cb = new QCheckBox("Python", htab)); htab->addWidget(idl_cb = new QCheckBox("Idl", htab)); // // GridBox * grid = new GridBox(2, this); vbox->addWidget(grid); grid->setMargin(5); grid->setSpacing(5); grid->addWidget(new QLabel("current : ", grid)); grid->addWidget(current_le = new LineEdit(grid)); grid->addWidget(new QLabel("new : ", grid)); grid->addWidget(new_le = new LineEdit(grid)); // // htab = new HHBox(this); htab->setMargin(5); vbox->addWidget(htab); htab->addWidget(new QLabel(htab)); QPushButton * replace; htab->addWidget(replace = new QPushButton("Replace", htab)); htab->addWidget(new QLabel(htab)); QPushButton * quit; htab->addWidget(quit = new QPushButton("Quit", htab)); htab->addWidget(new QLabel(htab)); QSize bs(replace->sizeHint()); quit->setFixedSize(bs); connect(replace, SIGNAL(clicked()), this, SLOT(do_replace())); connect(quit, SIGNAL(clicked()), this, SLOT(reject())); }
Dialog::Dialog(UmlArtifact * art, const QByteArray & path_exe, QByteArray & pro, QByteArray & target, QByteArray & tmplt, QByteArray & config, QByteArray & defines, QByteArray & includepath, QByteArray & dependpath, QByteArray & objectsdir, QByteArray & footer) : QDialog(0), _art(art), _pro(pro), _target(target), _tmplt(tmplt), _config(config), _defines(defines), _includepath(includepath), _dependpath(dependpath), _objectsdir(objectsdir), _footer(footer) { setModal(true); QDir d(path_exe); QVBoxLayout * vbox = new QVBoxLayout(this); GridBox * grid = new GridBox(2, this); HHBox * htab; int index; vbox->addWidget(grid); vbox->setMargin(5); grid->addWidget(new QLabel(".pro file : ", grid)); grid->addWidget(htab = new HHBox(grid)); htab->addWidget(edpro = new QLineEdit(htab)); edpro->setText(d.absoluteFilePath(pro)); htab->addWidget(new QLabel(" ", htab)); htab->addWidget(browsepro = new SmallPushButton("browse", htab)); connect(browsepro, SIGNAL(clicked()), this, SLOT(browse_pro())); grid->addWidget(new QLabel("target : ", grid)); grid->addWidget(htab = new HHBox(grid)); htab->addWidget(edtarget = new QLineEdit(htab)); edtarget->setText(d.absoluteFilePath(target)); htab->addWidget(new QLabel(" ", htab)); htab->addWidget(browsetarget = new SmallPushButton("browse", htab)); connect(browsetarget, SIGNAL(clicked()), this, SLOT(browse_target())); grid->addWidget(new QLabel("template : ", grid)); grid->addWidget(cbtemplate = new QComboBox(grid)); cbtemplate->setEditable(true); static const char * templates[] = { "app", "lib", "subdirs" }; bool find = FALSE; for (index = 0; index != sizeof(templates) / sizeof(*templates); index += 1) { cbtemplate->addItem(templates[index]); if (tmplt == templates[index]) { cbtemplate->setCurrentIndex(index); find = TRUE; } } if (! find) { cbtemplate->addItem((QString) tmplt); cbtemplate->setCurrentIndex(index); } grid->addWidget(new QLabel("config : ", grid)); grid->addWidget(htab = new HHBox(grid)); htab->addWidget(cbconf[0] = new QComboBox( htab)); cbconf[0]->addItem("debug"); cbconf[0]->addItem("release"); QStringList lcnf = QString(config).split(" "); //QStringList::split(" ", (const char *) config); QStringList::Iterator it = lcnf.begin(); cbconf[0]->setCurrentIndex((*it++ == "debug") ? 0 : 1); htab->addWidget(cbconf[1] = new QComboBox( htab)); cbconf[1]->addItem("warn_on"); cbconf[1]->addItem("warn_off"); cbconf[1]->setCurrentIndex((*it++ == "warn_on") ? 0 : 1); QSizePolicy sp = cbconf[0]->sizePolicy(); sp.setHorizontalPolicy(QSizePolicy::Fixed); cbconf[0]->setSizePolicy(sp); cbconf[1]->setSizePolicy(sp); htab->addWidget(new QLabel(" qt ", htab)); it++; // qt /*const char * configs[] = { "", "opengl", "thread", "x11", "windows", "console", "dll", "staticlib", 0 };*/ QStringList configs; configs<<""<<"opengl"<<"thread"<<"x11"<<"windows"<< "console"<<"dll"<<"staticlib"; for (index = 2; index != sizeof(cbconf) / sizeof(*cbconf) - 1; index += 1) { htab->addWidget(cbconf[index] = new QComboBox( htab)); cbconf[index]->setEditable(true); if (it != lcnf.end()) cbconf[index]->addItem(*it++); cbconf[index]->addItems(configs); cbconf[index]->setCurrentIndex(0); } htab->addWidget(cbconf[index] = new QComboBox( htab)); cbconf[index]->setEditable(true); if (it != lcnf.end()) { QString s = *it++; while (it != lcnf.end()) s += " " + *it++; cbconf[index]->addItem(s); } cbconf[index]->addItems(configs); cbconf[index]->setCurrentIndex(0); grid->addWidget(new QLabel("defines : ", grid)); grid->addWidget(eddefines = new QLineEdit(grid)); eddefines->setText(defines); ///may be computed grid->addWidget(new QLabel("include paths : ", grid)); grid->addWidget(htab = new HHBox(grid)); htab->addWidget(edincludepath = new QLineEdit(htab)); edincludepath->setText(includepath); htab->addWidget(new QLabel(" ", htab)); htab->addWidget(computeincludepath = new SmallPushButton("compute", htab)); connect(computeincludepath, SIGNAL(clicked()), this, SLOT(compute_includepath())); grid->addWidget(new QLabel("depend paths : ", grid)); grid->addWidget(eddependpath = new QLineEdit(grid)); eddependpath->setText(dependpath); grid->addWidget(new QLabel("objects dir : ", grid)); grid->addWidget(htab = new HHBox(grid)); htab->addWidget(edobjectsdir = new QLineEdit(htab)); edobjectsdir->setText(objectsdir); htab->addWidget(new QLabel(" ", htab)); htab->addWidget(browseobjectsdir = new SmallPushButton("browse", htab)); connect(browseobjectsdir, SIGNAL(clicked()), this, SLOT(browse_objectsdir())); grid->addWidget(new QLabel("footer : ", grid)); grid->addWidget(edfooter = new QTextEdit(grid)); edfooter->setText(footer); grid->addWidget(new QLabel(grid)); grid->addWidget(new QLabel(grid)); grid->addWidget(new QLabel(grid)); grid->addWidget(htab = new HHBox(grid)); htab->addWidget(new QLabel(htab)); QPushButton * ok ; htab->addWidget(ok = new QPushButton("&OK", htab)); htab->addWidget(new QLabel(htab)); QPushButton * cancel; htab->addWidget( cancel = new QPushButton("&Cancel", htab)); htab->addWidget(new QLabel(htab)); QSize bs(cancel->sizeHint()); ok->setDefault(TRUE); if (ok->sizeHint().width() > bs.width()) bs.setWidth(ok->sizeHint().width()); ok->setFixedSize(bs); cancel->setFixedSize(bs); connect(ok, SIGNAL(clicked()), this, SLOT(accept())); connect(cancel, SIGNAL(clicked()), this, SLOT(reject())); }
ConstrDestrCopyDialog::ConstrDestrCopyDialog(UmlClass * cl, bool have_constructor, bool have_destructor, bool have_copy, bool have_const_copy, bool have_assignment, bool have_const_assignment) : QDialog(0), target(cl) { setModal(true); QVBoxLayout * vbox = new QVBoxLayout(this); GridBox * g; QList<QLabel*> labels; QLabel * lbl; vbox->setSpacing(5); vbox->setMargin(5); lbl = new QLabel(QString("<big><b>C++ utilities for the class <i><tt>") + (const char *) cl->name() + "</tt></i></b></big>", this); lbl->setAlignment(Qt::AlignCenter); vbox->addWidget(lbl); // constructor g = new GridBox(2, this); vbox->addWidget(g); labels.append(lbl = new QLabel((have_constructor) ? "the class already have contructor " : "the class doesn't have contructor ", g)); g->addWidget(lbl); HHBox * h; g->addWidget(h = new HHBox(g)); h->addWidget(add_constr = new QCheckBox("add constructor", h)); h->addWidget(constr_explicit = new QCheckBox("explicit", h)); // destructor if (! have_destructor) { g = new GridBox(2,this); vbox->addWidget(g); labels.append(lbl = new QLabel("the class doesn't have destructor ", g)); g->addWidget(lbl); h = new HHBox(g); g->addWidget(h); h->addWidget(add_destr = new QCheckBox("add destructor", h)); h->addWidget(virtual_destr = new QCheckBox("virtual", h)); } else add_destr = 0; // copy contructor if (have_copy) { add_copy = 0; if (!have_const_copy) { g = new GridBox(2, this); vbox->addWidget(g); labels.append(lbl = new QLabel("the class doesn't have copy contructor \nwith const argument ", g)); g->addWidget(lbl); g->addWidget(add_const_copy = new QCheckBox("add copy constructor\nwith const argument", g)); } else add_const_copy = 0; } else if (!have_const_copy) { g = new GridBox(2, this); vbox->addWidget(g); labels.append(lbl = new QLabel("the class doesn't have copy contructor ", g)); g->addWidget(lbl); VVBox * v = new VVBox(g); g->addWidget(v); v->addWidget(add_const_copy = new QCheckBox("add copy constructor\nwith const argument", v)); v->addWidget(add_copy = new QCheckBox("add copy constructor\nwith non const argument", v)); } else { g = new GridBox(2,this); vbox->addWidget(g); labels.append(lbl = new QLabel("the class doesn't have copy contructor \nwith non const argument ", g)); g->addWidget(lbl); g->addWidget(add_copy = new QCheckBox("add copy constructor\nwith non const argument", g)); add_const_copy = 0; } // assignment if (have_assignment) { add_assign = 0; if (!have_const_assignment) { g = new GridBox(2, this); vbox->addWidget(g); labels.append(lbl = new QLabel("the class doesn't have assignment\noperator with const argument ", g)); g->addWidget(lbl); g->addWidget(add_const_assign = new QCheckBox("add assignment\nwith const argument", g)); } else add_const_assign = 0; } else if (!have_const_assignment) { g = new GridBox(2, this); vbox->addWidget(g); labels.append(lbl = new QLabel("the class doesn't have assignment operator ", g)); g->addWidget(lbl); VVBox * v = new VVBox(g); g->addWidget(v); v->addWidget(add_const_assign = new QCheckBox("add assignment\nwith const argument", v)); v->addWidget(add_assign = new QCheckBox("add assignment\nwith non const argument", v)); } else { g = new GridBox(2,this); vbox->addWidget(g); labels.append(lbl = new QLabel("the class doesn't have assignment operator \nwith non const argument ", g)); g->addWidget(lbl); g->addWidget(add_assign = new QCheckBox("add assignment\nwith non const argument", g)); add_const_assign = 0; } // use the same width for all the labels on the first column QSize sz(labels.first()->sizeHint()); foreach (lbl,labels) { if (lbl->sizeHint().width() > sz.width()) sz.setWidth(lbl->sizeHint().width()); } foreach (lbl,labels) { sz.setHeight(lbl->sizeHint().height()); lbl->setFixedSize(sz); }