DomainWidget::DomainWidget(QWidget *parent): BaseObjectWidget(parent, OBJ_DOMAIN) { try { Ui_DomainWidget::setupUi(this); check_expr_hl=nullptr; check_expr_hl=new SyntaxHighlighter(check_expr_txt, false, true); check_expr_hl->loadConfiguration(GlobalAttributes::SQL_HIGHLIGHT_CONF_PATH); data_type=nullptr; data_type=new PgSQLTypeWidget(this); domain_grid->addWidget(data_type,4,0,1,2); domain_grid->addItem(new QSpacerItem(10,1,QSizePolicy::Fixed,QSizePolicy::Expanding), domain_grid->count()+1, 0, 1, 0); configureFormLayout(domain_grid, OBJ_DOMAIN); setRequiredField(data_type); configureTabOrder({ def_value_edt, constr_name_edt, not_null_chk, check_expr_txt, data_type }); setMinimumSize(580, 530); } catch(Exception &e) { throw Exception(e.getErrorMessage(),e.getErrorType(),__PRETTY_FUNCTION__,__FILE__,__LINE__, &e); } }
DomainWidget::DomainWidget(QWidget *parent): BaseObjectWidget(parent, OBJ_DOMAIN) { try { Ui_DomainWidget::setupUi(this); check_expr_hl=nullptr; check_expr_hl=new SyntaxHighlighter(check_expr_txt, false); check_expr_hl->loadConfiguration(GlobalAttributes::CONFIGURATIONS_DIR + GlobalAttributes::DIR_SEPARATOR + GlobalAttributes::SQL_HIGHLIGHT_CONF + GlobalAttributes::CONFIGURATION_EXT); data_type=nullptr; data_type=new PgSQLTypeWidget(this); domain_grid->addWidget(data_type,4,0,1,2); configureFormLayout(domain_grid, OBJ_DOMAIN); connect(parent_form->apply_ok_btn,SIGNAL(clicked(bool)), this, SLOT(applyConfiguration(void))); parent_form->setMinimumSize(540, 570); parent_form->setMaximumHeight(570); setRequiredField(data_type); configureTabOrder({ def_value_edt, constr_name_edt, not_null_chk, check_expr_txt, data_type }); } catch(Exception &e) { throw Exception(e.getErrorMessage(),e.getErrorType(),__PRETTY_FUNCTION__,__FILE__,__LINE__, &e); } }
ExtensionWidget::ExtensionWidget(QWidget * parent) : BaseObjectWidget(parent, OBJ_EXTENSION) { Ui_ExtensionWidget::setupUi(this); configureFormLayout(extension_grid, OBJ_EXTENSION); extension_grid->addItem(new QSpacerItem(10,10,QSizePolicy::Minimum,QSizePolicy::Expanding), extension_grid->count()+1, 0, 1, 0); configureTabOrder({ cur_ver_edt, old_ver_edt, handles_type_chk }); setMinimumSize(500, 180); }
TablespaceWidget::TablespaceWidget(QWidget *parent): BaseObjectWidget(parent, OBJ_TABLESPACE) { Ui_TablespaceWidget::setupUi(this); configureFormLayout(tablespace_grid, OBJ_TABLESPACE); tablespace_grid->addItem(new QSpacerItem(10,0,QSizePolicy::Minimum,QSizePolicy::Expanding), tablespace_grid->count(), 0); setRequiredField(directory_lbl); setRequiredField(directory_edt); configureTabOrder(); setMinimumSize(480, 140); }
IndexWidget::IndexWidget(QWidget *parent): BaseObjectWidget(parent, OBJ_INDEX) { try { QStringList list; QGridLayout *grid=nullptr; map<QString, vector<QWidget *> > fields_map; QFrame *frame=nullptr; Ui_IndexWidget::setupUi(this); predicate_hl=new SyntaxHighlighter(predicate_txt, false); predicate_hl->loadConfiguration(GlobalAttributes::CONFIGURATIONS_DIR + GlobalAttributes::DIR_SEPARATOR + GlobalAttributes::SQL_HIGHLIGHT_CONF + GlobalAttributes::CONFIGURATION_EXT); elements_wgt = new ElementsWidget(this); grid=new QGridLayout; grid->setContentsMargins(4,4,4,4); grid->addWidget(elements_wgt,0,0); tabWidget->widget(1)->setLayout(grid); configureFormLayout(index_grid, OBJ_INDEX); parent_form->setMinimumSize(600, 600); IndexingType::getTypes(list); indexing_cmb->addItems(list); fields_map[BaseObjectWidget::generateVersionsInterval(BaseObjectWidget::AFTER_VERSION, SchemaParser::PGSQL_VERSION_92)].push_back(buffering_chk); frame=BaseObjectWidget::generateVersionWarningFrame(fields_map); frame->setParent(this); grid=dynamic_cast<QGridLayout *>(tabWidget->widget(0)->layout()); grid->addWidget(frame, grid->count(), 0, 1, 5); connect(parent_form->apply_ok_btn,SIGNAL(clicked(bool)), this, SLOT(applyConfiguration(void))); connect(indexing_cmb, SIGNAL(currentIndexChanged(int)), this, SLOT(selectIndexingType(void))); connect(fill_factor_chk, SIGNAL(toggled(bool)), fill_factor_sb, SLOT(setEnabled(bool))); configureTabOrder(); selectIndexingType(); } catch(Exception &e) { throw Exception(e.getErrorMessage(),e.getErrorType(),__PRETTY_FUNCTION__,__FILE__,__LINE__, &e); } }
CastWidget::CastWidget(QWidget *parent): BaseObjectWidget(parent, OBJ_CAST) { try { QFont font; QFrame *frame=nullptr; QSpacerItem *spacer=new QSpacerItem(10,1,QSizePolicy::Fixed,QSizePolicy::Expanding); Ui_CastWidget::setupUi(this); src_datatype=new PgSQLTypeWidget(this, trUtf8("Source data type")); trg_datatype=new PgSQLTypeWidget(this, trUtf8("Target data type")); conv_func_sel=new ObjectSelectorWidget(OBJ_FUNCTION, true, this); cast_grid->addWidget(conv_func_sel,1,1,1,4); cast_grid->addWidget(src_datatype,2,0,1,5); cast_grid->addWidget(trg_datatype,3,0,1,5); configureFormLayout(cast_grid, OBJ_CAST); name_edt->setReadOnly(true); font=name_edt->font(); font.setItalic(true); name_edt->setFont(font); frame=generateInformationFrame(trUtf8("The function to be assigned to a cast from <em><strong>typeA</strong></em> to <em><strong>typeB</strong></em> must have the following signature: <em><strong>typeB</strong> function(<strong>typeA</strong>, integer, boolean)</em>.")); cast_grid->addWidget(frame, cast_grid->count()+1, 0, 1, 0); cast_grid->addItem(spacer, cast_grid->count()+1, 0, 1, 0); frame->setParent(this); connect(parent_form->apply_ok_btn,SIGNAL(clicked(bool)), this, SLOT(applyConfiguration(void))); connect(input_output_chk, SIGNAL(toggled(bool)), conv_func_sel, SLOT(setDisabled(bool))); connect(input_output_chk, SIGNAL(toggled(bool)), conv_func_sel, SLOT(clearSelector(void))); parent_form->setMinimumSize(530, 520); parent_form->setMaximumHeight(520); setRequiredField(src_datatype); setRequiredField(trg_datatype); configureTabOrder({ explicit_rb, implicit_rb, assignment_rb, input_output_chk, conv_func_sel, src_datatype, trg_datatype }); } catch(Exception &e) { throw Exception(e.getErrorMessage(),e.getErrorType(),__PRETTY_FUNCTION__,__FILE__,__LINE__, &e); } }
EventTriggerWidget::EventTriggerWidget(QWidget *parent): BaseObjectWidget(parent, OBJ_EVENT_TRIGGER) { Ui_EventTriggerWidget::setupUi(this); function_sel=new ObjectSelectorWidget(OBJ_FUNCTION, true, this); filter_tab=new ObjectTableWidget(ObjectTableWidget::ADD_BUTTON | ObjectTableWidget::EDIT_BUTTON | ObjectTableWidget::UPDATE_BUTTON | ObjectTableWidget::REMOVE_BUTTON | ObjectTableWidget::REMOVE_ALL_BUTTON | ObjectTableWidget::MOVE_BUTTONS, false, this); filter_tab->setColumnCount(1); filter_tab->setHeaderLabel(trUtf8("Tag command"), 0); eventtrigger_grid->addWidget(function_sel, 1, 1); filter_layout->addWidget(filter_tab); configureFormLayout(eventtrigger_grid, OBJ_EVENT_TRIGGER); parent_form->setMinimumSize(530, 450); configureTabOrder({ event_cmb, function_sel, tag_edt, filter_tab }); QStringList list; EventTriggerType::getTypes(list); event_cmb->addItems(list); connect(parent_form->apply_ok_btn,SIGNAL(clicked(bool)), this, SLOT(applyConfiguration(void))); connect(filter_tab, SIGNAL(s_rowAdded(int)), this, SLOT(handleTagValue(int))); connect(filter_tab, SIGNAL(s_rowUpdated(int)), this, SLOT(handleTagValue(int))); connect(filter_tab, &ObjectTableWidget::s_rowsRemoved, [=](){ filter_tab->setButtonsEnabled(ObjectTableWidget::ADD_BUTTON, false); }); connect(filter_tab, &ObjectTableWidget::s_rowEdited, [=](int row){ tag_edt->setText(filter_tab->getCellText(row, 0)); }); connect(tag_edt, &QLineEdit::textChanged, [=](){ filter_tab->setButtonsEnabled(ObjectTableWidget::ADD_BUTTON, !tag_edt->text().isEmpty()); filter_tab->setButtonsEnabled(ObjectTableWidget::UPDATE_BUTTON, !tag_edt->text().isEmpty()); }); }
ConversionWidget::ConversionWidget(QWidget *parent): BaseObjectWidget(parent, OBJ_CONVERSION) { try { QFrame *frame=nullptr; QStringList encodings; Ui_ConversionWidget::setupUi(this); conv_func_sel=nullptr; conv_func_sel=new ObjectSelectorWidget(OBJ_FUNCTION, true, this); convcod_grid->addWidget(conv_func_sel,1,1,1,3); setRequiredField(src_encoding_lbl); setRequiredField(trg_encoding_lbl); setRequiredField(conv_func_lbl); setRequiredField(conv_func_sel); configureFormLayout(convcod_grid, OBJ_CONVERSION); frame=generateInformationFrame(trUtf8("The function to be assigned to an encoding conversion must have the following signature: <em>void function(integer, integer, cstring, internal, integer)</em>.")); convcod_grid->addWidget(frame, convcod_grid->count()+1, 0, 1, 0); frame->setParent(this); EncodingType::getTypes(encodings); src_encoding_cmb->addItems(encodings); trg_encoding_cmb->addItems(encodings); connect(parent_form->apply_ok_btn,SIGNAL(clicked(bool)), this, SLOT(applyConfiguration(void))); parent_form->setMinimumSize(600, 360); parent_form->setMaximumHeight(360); configureTabOrder({ src_encoding_cmb, trg_encoding_cmb, conv_func_sel }); } catch(Exception &e) { throw Exception(e.getErrorMessage(),e.getErrorType(),__PRETTY_FUNCTION__,__FILE__,__LINE__, &e); } }
SequenceWidget::SequenceWidget(QWidget *parent): BaseObjectWidget(parent, OBJ_SEQUENCE) { try { Ui_SequenceWidget::setupUi(this); column_sel=nullptr; column_sel=new ObjectSelectorWidget(OBJ_COLUMN, true, this); sequence_grid->addWidget(column_sel,3,1,1,3); configureFormLayout(sequence_grid, OBJ_SEQUENCE); connect(parent_form->apply_ok_btn,SIGNAL(clicked(bool)), this, SLOT(applyConfiguration(void))); parent_form->setMinimumSize(500, 360); parent_form->setMaximumHeight(360); configureTabOrder(); } catch(Exception &e) { throw Exception(e.getErrorMessage(),e.getErrorType(),__PRETTY_FUNCTION__,__FILE__,__LINE__, &e); } }
AggregateWidget::AggregateWidget(QWidget *parent): BaseObjectWidget(parent, OBJ_AGGREGATE) { try { QGridLayout *grid=nullptr; Ui_AggregateWidget::setupUi(this); QSpacerItem *spacer=nullptr; QFrame *frame=nullptr; initial_cond_hl=new SyntaxHighlighter(initial_cond_txt); initial_cond_hl->loadConfiguration(GlobalAttributes::SQL_HIGHLIGHT_CONF_PATH); final_func_sel=new ObjectSelectorWidget(OBJ_FUNCTION, true, this); transition_func_sel=new ObjectSelectorWidget(OBJ_FUNCTION, true, this); sort_op_sel=new ObjectSelectorWidget(OBJ_OPERATOR, true, this); input_type=new PgSQLTypeWidget(this, trUtf8("Input Data Type")); state_type=new PgSQLTypeWidget(this, trUtf8("State Data Type")); input_types_tab=new ObjectTableWidget(ObjectTableWidget::ALL_BUTTONS ^ ObjectTableWidget::EDIT_BUTTON, true, this); input_types_tab->setColumnCount(1); funcaoagregacao_grid->addWidget(final_func_sel,0,1,1,1); funcaoagregacao_grid->addWidget(transition_func_sel,1,1,1,1); funcaoagregacao_grid->addWidget(sort_op_sel,2,1,1,1); grid=new QGridLayout; grid->setContentsMargins(2,2,2,2); grid->addWidget(input_type,0,0); grid->addWidget(input_types_tab,1,0); state_input_types_twg->widget(0)->setLayout(grid); grid=new QGridLayout; spacer=new QSpacerItem(20, 1, QSizePolicy::Minimum, QSizePolicy::Expanding); grid->setContentsMargins(2,2,2,2); grid->addWidget(state_type,0,0); grid->addItem(spacer,1,0); state_input_types_twg->widget(1)->setLayout(grid); frame=generateInformationFrame(trUtf8("An aggregate function that accepts the types <em><strong>typeA</strong></em> and <em><strong>typeB</strong></em> as input types and which type of state is <em><strong>state_type</strong></em>, must obey the following rules: <br/><br/> <strong> • Final Function:</strong> <em>void final_function(<strong>state_type</strong>)</em><br/> <strong> • Transition Function:</strong> <em><strong>state_type</strong> transition_function(<strong>state_type</strong>, <strong>typeA</strong>, <strong>typeB</strong>)</em>")); funcaoagregacao_grid->addWidget(frame, funcaoagregacao_grid->count()+1, 0, 1, 2); frame->setParent(this); configureFormLayout(funcaoagregacao_grid, OBJ_AGGREGATE); parent_form->setMinimumSize(645, 750); connect(parent_form->apply_ok_btn,SIGNAL(clicked(bool)), this, SLOT(applyConfiguration(void))); connect(input_types_tab, SIGNAL(s_rowAdded(int)), this, SLOT(handleDataType(int))); connect(input_types_tab, SIGNAL(s_rowUpdated(int)), this, SLOT(handleDataType(int))); setRequiredField(state_type); setRequiredField(input_type); setRequiredField(transition_func_sel); setRequiredField(transition_func_lbl); configureTabOrder({ final_func_sel, transition_func_sel, sort_op_sel }); } catch(Exception &e) { throw Exception(e.getErrorMessage(),e.getErrorType(),__PRETTY_FUNCTION__,__FILE__,__LINE__, &e); } }
ConstraintWidget::ConstraintWidget(QWidget *parent): BaseObjectWidget(parent, OBJ_CONSTRAINT) { try { QStringList list; map<QString, vector<QWidget *> > fields_map; QGridLayout *grid=nullptr; Ui_ConstraintWidget::setupUi(this); excl_elems_wgt=new ElementsWidget(this); grid=new QGridLayout; grid->setContentsMargins(4,4,4,4); grid->addWidget(excl_elems_wgt,0,0); excl_elems_grp->setLayout(grid); expression_hl=new SyntaxHighlighter(expression_txt); expression_hl->loadConfiguration(GlobalAttributes::SQL_HIGHLIGHT_CONF_PATH); columns_tab=new ObjectTableWidget(ObjectTableWidget::ALL_BUTTONS ^ (ObjectTableWidget::EDIT_BUTTON | ObjectTableWidget::UPDATE_BUTTON), true, this); ref_columns_tab=new ObjectTableWidget(ObjectTableWidget::ALL_BUTTONS ^ (ObjectTableWidget::EDIT_BUTTON | ObjectTableWidget::UPDATE_BUTTON), true, this); ref_table_sel=new ObjectSelectorWidget(OBJ_TABLE, true, this); columns_tab->setColumnCount(2); columns_tab->setHeaderLabel(trUtf8("Column"), 0); columns_tab->setHeaderIcon(QPixmap(QString(":/icones/icones/column.png")),0); columns_tab->setHeaderLabel(trUtf8("Type"), 1); columns_tab->setHeaderIcon(QPixmap(QString(":/icones/icones/usertype.png")),1); ref_columns_tab->setEnabled(false); ref_columns_tab->setColumnCount(2); ref_columns_tab->setHeaderLabel(trUtf8("Column"), 0); ref_columns_tab->setHeaderIcon(QPixmap(QString(":/icones/icones/column.png")),0); ref_columns_tab->setHeaderLabel(trUtf8("Type"), 1); ref_columns_tab->setHeaderIcon(QPixmap(QString(":/icones/icones/usertype.png")),1); dynamic_cast<QGridLayout *>(columns_tbw->widget(0)->layout())->addWidget(columns_tab, 1,0,1,3); dynamic_cast<QGridLayout *>(columns_tbw->widget(1)->layout())->addWidget(ref_table_sel, 0,1,1,2); dynamic_cast<QGridLayout *>(columns_tbw->widget(1)->layout())->addWidget(ref_columns_tab, 3,0,1,3); configureFormLayout(constraint_grid, OBJ_CONSTRAINT); ConstraintType::getTypes(list); constr_type_cmb->addItems(list); MatchType::getTypes(list); match_cmb->addItems(list); DeferralType::getTypes(list); deferral_cmb->addItems(list); ActionType::getTypes(list); on_delete_cmb->addItems(list); on_update_cmb->addItems(list); IndexingType::getTypes(list); indexing_cmb->addItems(list); info_frm=generateInformationFrame(trUtf8("Columns which were included by relationship can not be added / removed manually from the primary key. If done such changes they can raise errors. To create primary key using columns included by relationship use the following options: identifier field, attributes & constraints tab or primary key tab on the relationship form.")); constraint_grid->addWidget(info_frm, constraint_grid->count()+1, 0, 1, 0); info_frm->setParent(this); fields_map[generateVersionsInterval(AFTER_VERSION, PgSQLVersions::PGSQL_VERSION_92)].push_back(no_inherit_lbl); warn_frm=generateVersionWarningFrame(fields_map); constraint_grid->addWidget(warn_frm, constraint_grid->count()+1, 0, 1, 0); warn_frm->setParent(this); connect(parent_form->apply_ok_btn,SIGNAL(clicked(bool)), this, SLOT(applyConfiguration(void))); connect(constr_type_cmb, SIGNAL(currentIndexChanged(int)), this, SLOT(selectConstraintType(void))); connect(deferrable_chk, SIGNAL(toggled(bool)), deferral_cmb, SLOT(setEnabled(bool))); connect(deferrable_chk, SIGNAL(toggled(bool)), deferral_lbl, SLOT(setEnabled(bool))); connect(indexing_chk, SIGNAL(toggled(bool)), indexing_cmb, SLOT(setEnabled(bool))); connect(columns_tab, SIGNAL(s_rowAdded(int)), this, SLOT(addColumn(int))); connect(columns_tab, SIGNAL(s_rowRemoved(int)), this, SLOT(removeColumn(int))); connect(columns_tab, SIGNAL(s_rowsRemoved(void)), this, SLOT(removeColumns(void))); connect(ref_columns_tab, SIGNAL(s_rowAdded(int)), this, SLOT(addColumn(int))); connect(ref_columns_tab, SIGNAL(s_rowRemoved(int)), this, SLOT(removeColumn(int))); connect(ref_columns_tab, SIGNAL(s_rowsRemoved(void)), this, SLOT(removeColumns(void))); connect(ref_table_sel, SIGNAL(s_selectorCleared(void)), this, SLOT(selectReferencedTable(void))); connect(ref_table_sel, SIGNAL(s_objectSelected(void)), this, SLOT(selectReferencedTable(void))); connect(fill_factor_chk, SIGNAL(toggled(bool)), fill_factor_sb, SLOT(setEnabled(bool))); parent_form->setMinimumSize(600, 640); selectConstraintType(); configureTabOrder(); } catch(Exception &e) { throw Exception(e.getErrorMessage(),e.getErrorType(),__PRETTY_FUNCTION__,__FILE__,__LINE__, &e); } }
FunctionWidget::FunctionWidget(QWidget *parent): BaseObjectWidget(parent, OBJ_FUNCTION) { try { QStringList types; QGridLayout *grid=nullptr, *grid1=nullptr; QVBoxLayout *vlayout=nullptr; QSpacerItem *spacer=nullptr; map<QString, vector<QWidget *> > fields_map; map<QWidget *, vector<QString> > value_map; QFrame *frame=nullptr; Ui_FunctionWidget::setupUi(this); configureFormLayout(function_grid, OBJ_FUNCTION); connect(parent_form->apply_ok_btn,SIGNAL(clicked(bool)), this, SLOT(applyConfiguration(void))); source_code_hl=new SyntaxHighlighter(source_code_txt, false); source_code_cp=new CodeCompletionWidget(source_code_txt); ret_type=new PgSQLTypeWidget(this); vlayout=new QVBoxLayout; spacer=new QSpacerItem(5,5,QSizePolicy::Preferred,QSizePolicy::Expanding); vlayout->addWidget(ret_type); vlayout->addSpacerItem(spacer); return_tab=new ObjectTableWidget(ObjectTableWidget::ALL_BUTTONS ^ ObjectTableWidget::UPDATE_BUTTON, true, this); return_tab->setColumnCount(2); return_tab->setHeaderLabel(trUtf8("Column"), 0); return_tab->setHeaderIcon(QPixmap(":/icones/icones/column.png"),0); return_tab->setHeaderLabel(trUtf8("Type"), 1); return_tab->setHeaderIcon(QPixmap(":/icones/icones/usertype.png"),1); parameters_tab=new ObjectTableWidget(ObjectTableWidget::ALL_BUTTONS ^ ObjectTableWidget::UPDATE_BUTTON, true, this); parameters_tab->setColumnCount(4); parameters_tab->setHeaderLabel(trUtf8("Name"),0); parameters_tab->setHeaderIcon(QPixmap(":/icones/icones/parameter.png"),0); parameters_tab->setHeaderLabel(trUtf8("Type"),1); parameters_tab->setHeaderIcon(QPixmap(":/icones/icones/usertype.png"),1); parameters_tab->setHeaderLabel(trUtf8("Mode"),2); parameters_tab->setHeaderLabel(trUtf8("Default Value"),3); grid=new QGridLayout; grid->addWidget(parameters_tab,0,0,1,1); grid->setContentsMargins(4,4,4,4); func_config_twg->widget(1)->setLayout(grid); grid=dynamic_cast<QGridLayout *>(func_config_twg->widget(0)->layout()); grid->addLayout(vlayout, grid->count(), 0, 1, 5); grid->addWidget(ret_table_gb, grid->count()-1, 0, 1, 5); grid1=new QGridLayout; grid1->addWidget(return_tab, 0, 0, 1, 1); grid1->setContentsMargins(2,2,2,2); ret_table_gb->setLayout(grid1); ret_table_gb->setVisible(false); fields_map[generateVersionsInterval(AFTER_VERSION, SchemaParser::PGSQL_VERSION_92)].push_back(leakproof_chk); frame=generateVersionWarningFrame(fields_map, &value_map); grid->addWidget(frame, grid->count()+1, 0, 1, 5); frame->setParent(func_config_twg->widget(0)); parent_form->setMinimumSize(645, 675); SecurityType::getTypes(types); security_cmb->addItems(types); FunctionType::getTypes(types); func_type_cmb->addItems(types); BehaviorType::getTypes(types); behavior_cmb->addItems(types); connect(simple_rb, SIGNAL(clicked(bool)), this, SLOT(alternateReturnTypes(void))); connect(set_rb, SIGNAL(clicked(bool)), this, SLOT(alternateReturnTypes(void))); connect(table_rb, SIGNAL(clicked(bool)), this, SLOT(alternateReturnTypes(void))); connect(language_cmb, SIGNAL(currentIndexChanged(int)), this, SLOT(selectLanguage(void))); connect(parameters_tab, SIGNAL(s_rowAdded(int)), this, SLOT(showParameterForm())); connect(parameters_tab, SIGNAL(s_rowEdited(int)), this, SLOT(showParameterForm())); connect(return_tab, SIGNAL(s_rowAdded(int)), this, SLOT(showParameterForm())); connect(return_tab, SIGNAL(s_rowEdited(int)), this, SLOT(showParameterForm())); setRequiredField(language_lbl); setRequiredField(ret_method_lbl); setRequiredField(symbol_lbl); setRequiredField(library_lbl); setRequiredField(sourc_code_lbl); configureTabOrder(); } catch(Exception &e) { throw Exception(e.getErrorMessage(),e.getErrorType(),__PRETTY_FUNCTION__,__FILE__,__LINE__, &e); } }
TypeWidget::TypeWidget(QWidget *parent): BaseObjectWidget(parent, OBJ_TYPE) { try { QGridLayout *grid=nullptr; QFrame *frame=nullptr; QStringList list; unsigned i,i1; Ui_TypeWidget::setupUi(this); configureFormLayout(type_grid, OBJ_TYPE); like_type=new PgSQLTypeWidget(this, trUtf8("Like Type")); element_type=new PgSQLTypeWidget(this, trUtf8("Element Type")); range_subtype=new PgSQLTypeWidget(this, trUtf8("Subtype")); grid=dynamic_cast<QGridLayout *>(base_attribs_twg->widget(1)->layout()); grid->addWidget(like_type,6,0,1,0); grid->addWidget(element_type,7,0,1,0); grid->addItem(new QSpacerItem(20, 1, QSizePolicy::Minimum, QSizePolicy::Expanding),8,0); grid=dynamic_cast<QGridLayout *>(base_attribs_twg->widget(0)->layout()); for(i=Type::INPUT_FUNC; i <= Type::ANALYZE_FUNC; i++) { functions_sel[i]=nullptr; functions_sel[i]=new ObjectSelectorWidget(OBJ_FUNCTION, true, this); grid->addWidget(functions_sel[i],i,1,1,1); } enumerations_tab=new ObjectTableWidget(ObjectTableWidget::ALL_BUTTONS ^ (ObjectTableWidget::EDIT_BUTTON | ObjectTableWidget::DUPLICATE_BUTTON), true, this); grid=dynamic_cast<QGridLayout *>(enumerations_gb->layout()); grid->addWidget(enumerations_tab,1,0,1,2); enumerations_gb->setVisible(false); attributes_tab=new ObjectTableWidget(ObjectTableWidget::ALL_BUTTONS ^ ObjectTableWidget::DUPLICATE_BUTTON, true, this); attributes_tab->setColumnCount(3); attributes_tab->setHeaderLabel(trUtf8("Name"),0); attributes_tab->setHeaderIcon(QPixmap(PgModelerUiNS::getIconPath("uid")),0); attributes_tab->setHeaderLabel(trUtf8("Type"),1); attributes_tab->setHeaderIcon(QPixmap(PgModelerUiNS::getIconPath("usertype")),1); attributes_tab->setHeaderLabel(trUtf8("Collation"),2); attributes_tab->setHeaderIcon(QPixmap(PgModelerUiNS::getIconPath("collation")),2); grid=dynamic_cast<QGridLayout *>(attributes_gb->layout()); attrib_collation_sel=new ObjectSelectorWidget(OBJ_COLLATION, true, this); grid->addWidget(attrib_collation_sel, 1,1,1,2); attrib_type_wgt=new PgSQLTypeWidget(this); grid->addWidget(attrib_type_wgt,2,0,1,2); grid->addWidget(attributes_tab,3,0,1,2); attributes_gb->setVisible(false); grid=dynamic_cast<QGridLayout *>(base_attribs_twg->widget(0)->layout()); frame=generateInformationFrame(trUtf8("The functions to be assigned to a type should be written in C language and possess, respectively, the following signatures:<br/> <table> <tr> <td><strong>INPUT:</strong> <em>any function(cstring, oid, integer)</em></td> <td><strong>OUTPUT:</strong> <em>cstring function(any)</em></td> </tr> <tr> <td><strong>SEND:</strong> <em>byta function(any)</em></td> <td><strong>RECV:</strong> <em>any function(internal, oid, integer)</em></td> </tr> <tr> <td><strong>TPMOD_IN:</strong> <em>integer function(cstring[])</em></td> <td><strong>TPMOD_OUT:</strong> <em>cstring function(integer)</em></td> </tr> <tr> <td><strong>ANALYZE:</strong> <em>boolean function(internal)</em></td> <tr> </table>")); grid->addItem(new QSpacerItem(20, 1, QSizePolicy::Minimum, QSizePolicy::Expanding), grid->count()+1,0); grid->addWidget(frame, grid->count()+1, 0, 1, 0); frame->setParent(base_attribs_twg->widget(0)); grid=dynamic_cast<QGridLayout *>(range_attribs_gb->layout()); opclass_sel=new ObjectSelectorWidget(OBJ_OPCLASS, true, this); grid->addWidget(opclass_sel,0,1,1,1); for(i1=1, i=Type::CANONICAL_FUNC; i <= Type::SUBTYPE_DIFF_FUNC; i++,i1++) { functions_sel[i]=nullptr; functions_sel[i]=new ObjectSelectorWidget(OBJ_FUNCTION, true, this); grid->addWidget(functions_sel[i],i1,1,1,1); } grid->addWidget(range_subtype,3,0,1,2); frame=generateInformationFrame(trUtf8("The functions to be assigned to a range type should have the following signatures:<br/><br/><strong>Canonical:</strong> <em>any function(any)</em> <br/><strong>Subtype Diff:</strong> <em>double precision function(subtype, subtype)</em>")); grid->addItem(new QSpacerItem(20, 1, QSizePolicy::Minimum, QSizePolicy::Expanding),4,0); grid->addWidget(frame, 5, 0, 1, 0); range_attribs_gb->setVisible(false); //connect(parent_form->apply_ok_btn,SIGNAL(clicked(bool)), this, SLOT(applyConfiguration(void))); connect(base_type_rb, SIGNAL(toggled(bool)), this, SLOT(selectTypeConfiguration(void))); connect(composite_rb, SIGNAL(toggled(bool)), this, SLOT(selectTypeConfiguration(void))); connect(enumeration_rb, SIGNAL(toggled(bool)), this, SLOT(selectTypeConfiguration(void))); connect(enumerations_tab, SIGNAL(s_rowAdded(int)), this, SLOT(handleEnumeration(int))); connect(enumerations_tab, SIGNAL(s_rowUpdated(int)), this, SLOT(handleEnumeration(int))); connect(attributes_tab, SIGNAL(s_rowAdded(int)), this, SLOT(handleAttribute(int))); connect(attributes_tab, SIGNAL(s_rowUpdated(int)), this, SLOT(handleAttribute(int))); connect(attributes_tab, SIGNAL(s_rowEdited(int)), this, SLOT(editAttribute(int))); StorageType::getTypes(list); storage_cmb->addItems(list); CategoryType::getTypes(list); category_cmb->addItems(list); setRequiredField(range_subtype); setRequiredField(input_lbl); setRequiredField(output_lbl); setRequiredField(functions_sel[Type::INPUT_FUNC]); setRequiredField(functions_sel[Type::OUTPUT_FUNC]); setRequiredField(enumerations_gb); setRequiredField(attributes_gb); configureTabOrder({base_type_rb, enumeration_rb, composite_rb, range_rb, enum_name_edt, attrib_name_edt, attrib_collation_sel, attrib_type_wgt, opclass_sel, functions_sel[Type::CANONICAL_FUNC], functions_sel[Type::SUBTYPE_DIFF_FUNC], base_attribs_twg}); setMinimumSize(620, 750); } catch(Exception &e) { throw Exception(e.getErrorMessage(),e.getErrorType(),__PRETTY_FUNCTION__,__FILE__,__LINE__, &e); } }
OperatorClassWidget::OperatorClassWidget(QWidget *parent): BaseObjectWidget(parent, OBJ_OPCLASS) { try { QStringList tipos; QGridLayout *grid=nullptr; Ui_OperatorClassWidget::setupUi(this); family_sel=new ObjectSelectorWidget(OBJ_OPFAMILY, false, this); data_type=new PgSQLTypeWidget(this); operator_sel=new ObjectSelectorWidget(OBJ_OPERATOR, true, this); elem_family_sel=new ObjectSelectorWidget(OBJ_OPFAMILY, true, this); function_sel=new ObjectSelectorWidget(OBJ_FUNCTION, true, this); storage_type=new PgSQLTypeWidget(this, trUtf8("Storage Type")); elements_tab=new ObjectTableWidget(ObjectTableWidget::ALL_BUTTONS, true, this); elements_tab->setColumnCount(4); elements_tab->setHeaderLabel(trUtf8("Object"),0); elements_tab->setHeaderIcon(QPixmap(QString(":/icones/icones/table.png")),0); elements_tab->setHeaderLabel(trUtf8("Type"),1); elements_tab->setHeaderIcon(QPixmap(QString(":/icones/icones/usertype.png")),1); elements_tab->setHeaderLabel(trUtf8("Support/Strategy"),2); elements_tab->setHeaderLabel(trUtf8("Operator Family"),3); grid=new QGridLayout; grid->setContentsMargins(0,0,0,0); grid->addWidget(def_class_lbl,0,2,1,1); grid->addWidget(def_class_chk,0,3,1,1); grid->addWidget(indexing_lbl,0,0,1,1); grid->addWidget(indexing_cmb,0,1,1,1); grid->addWidget(family_lbl,2,0,1,1); grid->addWidget(family_sel,2,1,1,4); grid->addWidget(data_type,4,0,1,5); grid->addWidget(elements_grp,5,0,1,5); this->setLayout(grid); configureFormLayout(grid, OBJ_OPCLASS); grid=dynamic_cast<QGridLayout *>(elements_grp->layout()); grid->addWidget(function_sel, 1,1,1,4); grid->addWidget(operator_sel, 2,1,1,4); grid->addWidget(elem_family_sel, 3,1,1,4); grid->addWidget(storage_type, 5,0,1,5); grid->addWidget(elements_tab, 6,0,1,4); connect(parent_form->apply_ok_btn,SIGNAL(clicked(bool)), this, SLOT(applyConfiguration(void))); connect(elem_type_cmb, SIGNAL(currentIndexChanged(int)), this, SLOT(selectElementType(int))); connect(elements_tab, SIGNAL(s_rowAdded(int)), this, SLOT(handleElement(int))); connect(elements_tab, SIGNAL(s_rowUpdated(int)), this, SLOT(handleElement(int))); connect(elements_tab, SIGNAL(s_rowEdited(int)), this, SLOT(editElement(int))); parent_form->setMinimumSize(620, 640); selectElementType(0); IndexingType::getTypes(tipos); indexing_cmb->addItems(tipos); setRequiredField(elements_grp); configureTabOrder({ indexing_cmb, def_class_chk , family_sel, data_type, elem_type_cmb, operator_sel, elem_family_sel, function_sel, stg_num_sb, storage_type }); } catch(Exception &e) { throw Exception(e.getErrorMessage(),e.getErrorType(),__PRETTY_FUNCTION__,__FILE__,__LINE__, &e); } }
TableWidget::TableWidget(QWidget *parent): BaseObjectWidget(parent, OBJ_TABLE) { QGridLayout *grid=nullptr; ObjectTableWidget *tab=nullptr; ObjectType types[]= { OBJ_COLUMN, OBJ_CONSTRAINT, OBJ_TRIGGER, OBJ_RULE, OBJ_INDEX }; map<QString, vector<QWidget *> > fields_map; QFrame *frame=nullptr; Ui_TableWidget::setupUi(this); fields_map[generateVersionsInterval(AFTER_VERSION, PgSQLVersions::PGSQL_VERSION_91)].push_back(unlogged_chk); frame=generateVersionWarningFrame(fields_map); table_grid->addWidget(frame, table_grid->count()+1, 0, 1, 2); frame->setParent(this); parent_tables = new ObjectTableWidget(ObjectTableWidget::NO_BUTTONS, true, this); parent_tables->setColumnCount(3); parent_tables->setHeaderLabel(trUtf8("Name"), 0); parent_tables->setHeaderIcon(QPixmap(QString(":/icones/icones/uid.png")),0); parent_tables->setHeaderLabel(trUtf8("Schema"), 1); parent_tables->setHeaderIcon(QPixmap(QString(":/icones/icones/schema.png")),1); parent_tables->setHeaderLabel(trUtf8("Type"), 2); parent_tables->setHeaderIcon(QPixmap(QString(":/icones/icones/usertype.png")),2); tag_sel=new ObjectSelectorWidget(OBJ_TAG, false, this); dynamic_cast<QGridLayout *>(options_gb->layout())->addWidget(tag_sel, 0, 1, 1, 3); grid=new QGridLayout; grid->addWidget(parent_tables, 0,0,1,1); grid->setContentsMargins(4,4,4,4); attributes_tbw->widget(5)->setLayout(grid); //Configuring the table objects that stores the columns, triggers, constraints, rules and indexes for(unsigned i=0; i < 5; i++) { tab=new ObjectTableWidget(ObjectTableWidget::ALL_BUTTONS ^ (ObjectTableWidget::UPDATE_BUTTON), true, this); objects_tab_map[types[i]]=tab; grid=new QGridLayout; grid->addWidget(tab, 0,0,1,1); grid->setContentsMargins(4,4,4,4); attributes_tbw->widget(i)->setLayout(grid); connect(tab, SIGNAL(s_rowsRemoved(void)), this, SLOT(removeObjects(void))); connect(tab, SIGNAL(s_rowRemoved(int)), this, SLOT(removeObject(int))); connect(tab, SIGNAL(s_rowAdded(int)), this, SLOT(handleObject(void))); connect(tab, SIGNAL(s_rowEdited(int)), this, SLOT(handleObject(void))); connect(tab, SIGNAL(s_rowsMoved(int,int)), this, SLOT(swapObjects(int,int))); } objects_tab_map[OBJ_COLUMN]->setColumnCount(4); objects_tab_map[OBJ_COLUMN]->setHeaderLabel(trUtf8("Name"), 0); objects_tab_map[OBJ_COLUMN]->setHeaderIcon(QPixmap(QString(":/icones/icones/uid.png")),0); objects_tab_map[OBJ_COLUMN]->setHeaderLabel(trUtf8("Type"), 1); objects_tab_map[OBJ_COLUMN]->setHeaderIcon(QPixmap(QString(":/icones/icones/usertype.png")),1); objects_tab_map[OBJ_COLUMN]->setHeaderLabel(trUtf8("Default Value"), 2); objects_tab_map[OBJ_COLUMN]->setHeaderLabel(trUtf8("Attribute"), 3); objects_tab_map[OBJ_CONSTRAINT]->setColumnCount(4); objects_tab_map[OBJ_CONSTRAINT]->setHeaderLabel(trUtf8("Name"), 0); objects_tab_map[OBJ_CONSTRAINT]->setHeaderIcon(QPixmap(QString(":/icones/icones/uid.png")),0); objects_tab_map[OBJ_CONSTRAINT]->setHeaderLabel(trUtf8("Type"), 1); objects_tab_map[OBJ_CONSTRAINT]->setHeaderIcon(QPixmap(QString(":/icones/icones/usertype.png")),1); objects_tab_map[OBJ_CONSTRAINT]->setHeaderLabel(trUtf8("ON DELETE"), 2); objects_tab_map[OBJ_CONSTRAINT]->setHeaderLabel(trUtf8("ON UPDATE"), 3); objects_tab_map[OBJ_TRIGGER]->setColumnCount(4); objects_tab_map[OBJ_TRIGGER]->setHeaderLabel(trUtf8("Name"), 0); objects_tab_map[OBJ_TRIGGER]->setHeaderIcon(QPixmap(QString(":/icones/icones/uid.png")),0); objects_tab_map[OBJ_TRIGGER]->setHeaderLabel(trUtf8("Refer. Table"), 1); objects_tab_map[OBJ_TRIGGER]->setHeaderIcon(QPixmap(QString(":/icones/icones/table.png")),1); objects_tab_map[OBJ_TRIGGER]->setHeaderLabel(trUtf8("Firing"), 2); objects_tab_map[OBJ_TRIGGER]->setHeaderIcon(QPixmap(QString(":/icones/icones/trigger.png")),2); objects_tab_map[OBJ_TRIGGER]->setHeaderLabel(trUtf8("Events"), 3); objects_tab_map[OBJ_RULE]->setColumnCount(3); objects_tab_map[OBJ_RULE]->setHeaderLabel(trUtf8("Name"), 0); objects_tab_map[OBJ_RULE]->setHeaderIcon(QPixmap(QString(":/icones/icones/uid.png")),0); objects_tab_map[OBJ_RULE]->setHeaderLabel(trUtf8("Execution"), 1); objects_tab_map[OBJ_RULE]->setHeaderLabel(trUtf8("Event"), 2); objects_tab_map[OBJ_INDEX]->setColumnCount(2); objects_tab_map[OBJ_INDEX]->setHeaderLabel(trUtf8("Name"), 0); objects_tab_map[OBJ_INDEX]->setHeaderIcon(QPixmap(QString(":/icones/icones/uid.png")),0); objects_tab_map[OBJ_INDEX]->setHeaderLabel(trUtf8("Indexing"), 1); configureFormLayout(table_grid, OBJ_TABLE); configureTabOrder({ tag_sel }); setMinimumSize(600, 610); }