BancoDadosWidget::BancoDadosWidget(QWidget *parent): ObjetoBaseWidget(parent, OBJETO_BANCO_DADOS) { map<QString, vector<QWidget *> > mapa_campos; QFrame *frame=NULL; QLocale loc; QStringList lista_loc, codificacoes; unsigned i,i1; Ui_BancoDadosWidget::setupUi(this); connect(janela_pai->aplicar_ok_btn,SIGNAL(clicked(bool)), this, SLOT(aplicarConfiguracao(void))); configurarLayouFormulario(bancodados_grid, OBJETO_BANCO_DADOS); //Define os campos exclusivos para cada versão mapa_campos[gerarIntervaloVersoes(APOS_VERSAO, ParserEsquema::VERSAO_PGSQL_83)].push_back(limconexao_lbl); mapa_campos[gerarIntervaloVersoes(APOS_VERSAO, ParserEsquema::VERSAO_PGSQL_84)].push_back(lccollate_lbl); mapa_campos[gerarIntervaloVersoes(APOS_VERSAO, ParserEsquema::VERSAO_PGSQL_84)].push_back(lcctype_lbl); //Gera o frame de alerta frame=gerarFrameAlertaVersao(mapa_campos); bancodados_grid->addWidget(frame, bancodados_grid->count()+1, 0, 1, 0); frame->setParent(this); //Define as alturas mínimas e máxima do formulário janela_pai->setMinimumWidth(530); janela_pai->setMinimumHeight(420); janela_pai->setMaximumHeight(420); //Obtém os nomes das codificações e as insere no combo de codificação TipoCodificacao::obterTipos(codificacoes); codificacao_cmb->addItems(codificacoes); //Obtém todas as localizações padrão e as armazena em uma lista de QString for(i=QLocale::C; i <= QLocale::Chewa; i++) { for(i1=QLocale::Afghanistan; i1 <= QLocale::Zimbabwe; i1++) { loc=QLocale(static_cast<QLocale::Language>(i),static_cast<QLocale::Country>(i1)); lista_loc.append(loc.name()); } } //Remove as localizações duplicadas lista_loc.removeDuplicates(); //Ordena as localizações lista_loc.sort(); //Insere as localizações nos combos lccollate_cmb->addItem(trUtf8("Default")); lcctype_cmb->addItem(trUtf8("Default")); lccollate_cmb->addItems(lista_loc); lcctype_cmb->addItems(lista_loc); }
//*********************************************************** LinguagemWidget::LinguagemWidget(QWidget *parent): ObjetoBaseWidget(parent, OBJETO_LINGUAGEM) { try { map<QString, vector<QWidget *> > mapa_campos; QFrame *frame=NULL; QString chave_ver; Ui_LinguagemWidget::setupUi(this); sel_func_handler=NULL; sel_func_validator=NULL; sel_func_inline=NULL; sel_func_handler=new SeletorObjetoWidget(OBJETO_FUNCAO, true, this); sel_func_validator=new SeletorObjetoWidget(OBJETO_FUNCAO, true, this); sel_func_inline=new SeletorObjetoWidget(OBJETO_FUNCAO, true, this); linguagem_grid->addWidget(sel_func_handler,1,1,1,2); linguagem_grid->addWidget(sel_func_validator,2,1,1,2); linguagem_grid->addWidget(sel_func_inline,3,1,1,2); configurarLayouFormulario(linguagem_grid, OBJETO_LINGUAGEM); //Gera o frame de informação frame=gerarFrameInformacao(trUtf8("The functions to be assigned to the language should have, respectively, the following signatures:<br/><br/> <strong>Handler Function:</strong> <em>language_handler function()</em><br/> <strong>Validator Function:</strong> <em>void function(oid)</em><br/> <strong>Inline Function:</strong> <em>void function(internal)</em>")); linguagem_grid->addWidget(frame, linguagem_grid->count()+1, 0, 1, 0); frame->setParent(this); //Define os campos exclusivos para cada versão chave_ver=gerarIntervaloVersoes(APOS_VERSAO, ParserEsquema::VERSAO_PGSQL_84); mapa_campos[chave_ver].push_back(func_inline_lbl); //Gera o frame de alerta frame=gerarFrameAlertaVersao(mapa_campos); linguagem_grid->addWidget(frame, linguagem_grid->count()+1, 0, 1, 0); frame->setParent(this); connect(janela_pai->aplicar_ok_btn,SIGNAL(clicked(bool)), this, SLOT(aplicarConfiguracao(void))); janela_pai->setMinimumSize(550, 510); janela_pai->setMaximumSize(16777215, 510); } catch(Excecao &e) { //Redireciona o erro throw Excecao(e.obterMensagemErro(),e.obterTipoErro(),__PRETTY_FUNCTION__,__FILE__,__LINE__, &e); } }
//*********************************************************** SequenciaWidget::SequenciaWidget(QWidget *parent): ObjetoBaseWidget(parent, OBJETO_SEQUENCIA) { try { map<QString, vector<QWidget *> > mapa_campos; QFrame *frame=NULL; Ui_SequenciaWidget::setupUi(this); sel_coluna=NULL; sel_coluna=new SeletorObjetoWidget(OBJETO_COLUNA, true, this); //Adicionando os objetos recém alocados no layout do formulário sequencia_grid->addWidget(sel_coluna,3,1,1,3); //Define os campos exclusivos para cada versão mapa_campos[gerarIntervaloVersoes(APOS_VERSAO, ParserEsquema::VERSAO_PGSQL_83)].push_back(possuidora_lbl); //Gera o frame de alerta frame=gerarFrameAlertaVersao(mapa_campos); sequencia_grid->addWidget(frame, sequencia_grid->count()+1, 0, 1, 0); frame->setParent(this); configurarLayouFormulario(sequencia_grid, OBJETO_SEQUENCIA); connect(janela_pai->aplicar_ok_btn,SIGNAL(clicked(bool)), this, SLOT(aplicarConfiguracao(void))); janela_pai->resize(540, 410); janela_pai->setMinimumWidth(540); janela_pai->setMinimumHeight(430); janela_pai->setMaximumHeight(430); } catch(Excecao &e) { //Redireciona o erro throw Excecao(e.obterMensagemErro(),e.obterTipoErro(),__PRETTY_FUNCTION__,__FILE__,__LINE__, &e); } }
//*********************************************************** GatilhoWidget::GatilhoWidget(QWidget *parent): ObjetoBaseWidget(parent, OBJETO_GATILHO) { try { QStringList lista; map<QString, vector<QWidget *> > mapa_campos; map<QWidget *, vector<QString> > mapa_valores; QFrame *frame=NULL; Ui_GatilhoWidget::setupUi(this); //Cria um destacador de sintaxe no campo de expressão de checagem dest_exp_condicional=new DestaqueSintaxe(exp_condicional_txt, false); dest_exp_condicional->carregarConfiguracao(AtributosGlobais::DIR_CONFIGURACOES + AtributosGlobais::SEP_DIRETORIO + AtributosGlobais::CONF_DESTAQUE_SQL + AtributosGlobais::EXT_CONFIGURACAO); //Aloca as tabelas que recebem as colunas usadas na restrição tab_colunas=new TabelaObjetosWidget(TabelaObjetosWidget::TODOS_BOTOES ^ (TabelaObjetosWidget::BTN_EDITAR_ITEM | TabelaObjetosWidget::BTN_ATUALIZAR_ITEM), true, this); tab_argumentos=new TabelaObjetosWidget(TabelaObjetosWidget::TODOS_BOTOES, true, this); //Alocando seletor de tabela referenciada sel_tabela_ref=new SeletorObjetoWidget(OBJETO_TABELA, true, this); sel_funcao=new SeletorObjetoWidget(OBJETO_FUNCAO, true, this); gatilho_grid->addWidget(sel_funcao, 5, 1, 1, 2); gatilho_grid->addWidget(sel_tabela_ref, 6, 1, 1, 2); //Configurando as tabelas com 2 colunas (nome da coluna e tipo) tab_colunas->definirNumColunas(2); tab_colunas->definirRotuloCabecalho(trUtf8("Coluna"), 0); tab_colunas->definirIconeCabecalho(QPixmap(":/icones/icones/column.png"),0); tab_colunas->definirRotuloCabecalho(trUtf8("Tipo"), 1); tab_colunas->definirIconeCabecalho(QPixmap(":/icones/icones/usertype.png"),1); dynamic_cast<QGridLayout *>(arg_cols_tbw->widget(0)->layout())->addWidget(tab_colunas, 1,0,1,3); dynamic_cast<QGridLayout *>(arg_cols_tbw->widget(1)->layout())->addWidget(tab_argumentos, 1,0,1,3); //Configurando o combo de tipo de postergação com os tipos disponíveis TipoPostergacao::obterTipos(lista); tipo_postergacao_cmb->addItems(lista); //Configurando o combo de tipo disparo com os tipos disponíveis TipoDisparo::obterTipos(lista); tipo_disparo_cmb->addItems(lista); //Define os campos exclusivos para cada versão mapa_campos[gerarIntervaloVersoes(APOS_VERSAO, ParserEsquema::VERSAO_PGSQL_84)].push_back(truncate_chk); mapa_campos[gerarIntervaloVersoes(APOS_VERSAO, ParserEsquema::VERSAO_PGSQL_90)].push_back(exp_condicional_lbl); mapa_campos[gerarIntervaloVersoes(APOS_VERSAO, ParserEsquema::VERSAO_PGSQL_90)].push_back(coluna_lbl); mapa_campos[gerarIntervaloVersoes(APOS_VERSAO, ParserEsquema::VERSAO_PGSQL_91)].push_back(tipo_disparo_lbl); mapa_valores[tipo_disparo_lbl].push_back(tipo_disparo_cmb->itemText(tipo_disparo_cmb->count()-1)); //Gera o frame de alerta frame=gerarFrameAlertaVersao(mapa_campos, &mapa_valores); gatilho_grid->addWidget(frame, gatilho_grid->count()+1, 0, 1, 0); frame->setParent(this); configurarLayouFormulario(gatilho_grid, OBJETO_GATILHO); janela_pai->setMinimumSize(600, 640); connect(janela_pai->aplicar_ok_btn,SIGNAL(clicked(bool)), this, SLOT(aplicarConfiguracao(void))); connect(postergavel_chk, SIGNAL(toggled(bool)), tipo_postergacao_cmb, SLOT(setEnabled(bool))); connect(postergavel_chk, SIGNAL(toggled(bool)), tipo_postergacao_lbl, SLOT(setEnabled(bool))); connect(tab_colunas, SIGNAL(s_linhaAdicionada(int)), this, SLOT(adicionarColuna(int))); connect(tab_colunas, SIGNAL(s_linhaRemovida(int)), this, SLOT(atualizarComboColunas(void))); connect(tab_colunas, SIGNAL(s_linhasRemovidas(void)), this, SLOT(atualizarComboColunas(void))); connect(tab_argumentos, SIGNAL(s_linhaAdicionada(int)), this, SLOT(manipularArgumento(int))); connect(tab_argumentos, SIGNAL(s_linhaAtualizada(int)), this, SLOT(manipularArgumento(int))); connect(tab_argumentos, SIGNAL(s_linhaEditada(int)), this, SLOT(editarArgumento(int))); connect(gat_rest_chk, SIGNAL(toggled(bool)), this, SLOT(definirGratilhoRestricao(bool))); } catch(Excecao &e) { //Redireciona o erro throw Excecao(e.obterMensagemErro(),e.obterTipoErro(),__PRETTY_FUNCTION__,__FILE__,__LINE__, &e); } }
//*********************************************************** TipoWidget::TipoWidget(QWidget *parent): ObjetoBaseWidget(parent, OBJETO_TIPO) { try { QGridLayout *grid=NULL; QFrame *frame=NULL; QSpacerItem *spacer=NULL; map<QString, vector<QWidget *> > mapa_campos; QStringList lista; unsigned i; Ui_TipoWidget::setupUi(this); configurarLayouFormulario(tipo_grid, OBJETO_TIPO); //Aloca os widgets de configuração de tipos tipo_copia=NULL; tipo_copia=new TipoPgSQLWidget(this, trUtf8("Copy Type")); tipo_elemento=NULL; tipo_elemento=new TipoPgSQLWidget(this, trUtf8("Element Type")); //Cria um layout e insere os widgets de tipo grid=dynamic_cast<QGridLayout *>(atrib_base_twg->widget(0)->layout()); spacer=new QSpacerItem(20, 1, QSizePolicy::Minimum, QSizePolicy::Expanding); grid->addWidget(tipo_copia,6,0,1,0); grid->addWidget(tipo_elemento,7,0,1,0); grid->addItem(spacer,8,0); //Aloca os seletores de funções e os insere do layout da aba de funções grid=dynamic_cast<QGridLayout *>(atrib_base_twg->widget(1)->layout()); for(i=Tipo::FUNCAO_INPUT; i <= Tipo::FUNCAO_ANALYZE; i++) { sel_funcoes[i]=NULL; sel_funcoes[i]=new SeletorObjetoWidget(OBJETO_FUNCAO, true, this); grid->addWidget(sel_funcoes[i],i,1,1,1); } //Aloca a tabela de enumerações e a insere no layout do grupo de atributos de enumerações tab_enumeracoes=new TabelaObjetosWidget(TabelaObjetosWidget::TODOS_BOTOES ^ TabelaObjetosWidget::BTN_EDITAR_ITEM, false, this); grid=dynamic_cast<QGridLayout *>(enumeracoes_gb->layout()); grid->addWidget(tab_enumeracoes,1,0,1,2); enumeracoes_gb->setVisible(false); //Aloca a tabela de atributos e a insere no layout do grupo de atributos de tipo composto tab_atributos=new TabelaObjetosWidget(TabelaObjetosWidget::TODOS_BOTOES ^ TabelaObjetosWidget::BTN_ATUALIZAR_ITEM, false, this); tab_atributos->definirNumColunas(2); tab_atributos->definirRotuloCabecalho(trUtf8("Name"),0); tab_atributos->definirIconeCabecalho(QPixmap(":/icones/icones/uid.png"),0); tab_atributos->definirRotuloCabecalho(trUtf8("Type"),1); tab_atributos->definirIconeCabecalho(QPixmap(":/icones/icones/usertype.png"),1); grid=new QGridLayout; grid->setContentsMargins(2,2,2,2); grid->addWidget(tab_atributos,0,0); atributos_gb->setLayout(grid); atributos_gb->setVisible(false); //Configura um alerta de versão com os campos específicos das versões mapa_campos[gerarIntervaloVersoes(APOS_VERSAO, ParserEsquema::VERSAO_PGSQL_83)].push_back(enumeracao_rb); mapa_campos[gerarIntervaloVersoes(APOS_VERSAO, ParserEsquema::VERSAO_PGSQL_84)].push_back(categoria_lbl); mapa_campos[gerarIntervaloVersoes(APOS_VERSAO, ParserEsquema::VERSAO_PGSQL_84)].push_back(preferido_lbl); mapa_campos[gerarIntervaloVersoes(APOS_VERSAO, ParserEsquema::VERSAO_PGSQL_84)].push_back(tipo_copia); frame=gerarFrameAlertaVersao(mapa_campos); tipo_grid->addWidget(frame, tipo_grid->count()+1, 0, 1, 0); frame->setParent(this); //Gera o frame de informação grid=dynamic_cast<QGridLayout *>(atrib_base_twg->widget(1)->layout()); frame=gerarFrameInformacao(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->addWidget(frame, grid->count()+1, 0, 1, 0); frame->setParent(atrib_base_twg->widget(1)); connect(janela_pai->aplicar_ok_btn,SIGNAL(clicked(bool)), this, SLOT(aplicarConfiguracao(void))); connect(tipo_base_rb, SIGNAL(toggled(bool)), this, SLOT(selecionarConfiguracaoTipo(void))); connect(composto_rb, SIGNAL(toggled(bool)), this, SLOT(selecionarConfiguracaoTipo(void))); connect(enumeracao_rb, SIGNAL(toggled(bool)), this, SLOT(selecionarConfiguracaoTipo(void))); connect(tab_enumeracoes, SIGNAL(s_linhaAdicionada(int)), this, SLOT(manipularEnumeracao(int))); connect(tab_enumeracoes, SIGNAL(s_linhaAtualizada(int)), this, SLOT(manipularEnumeracao(int))); connect(tab_atributos, SIGNAL(s_linhaAdicionada(int)), this, SLOT(exibirFormAtributo(void))); connect(tab_atributos, SIGNAL(s_linhaEditada(int)), this, SLOT(exibirFormAtributo(void))); janela_pai->setMinimumSize(625, 765); //Preenche o combo box com os tipos de armazenamento disponíveis TipoArmazenamento::obterTipos(lista); armazenamento_cmb->addItems(lista); //Preenche o combo box com os tipos de categoria disponíveis TipoCategoria::obterTipos(lista); categoria_cmb->addItems(lista); } catch(Excecao &e) { //Redireciona o erro throw Excecao(e.obterMensagemErro(),e.obterTipoErro(),__PRETTY_FUNCTION__,__FILE__,__LINE__, &e); } }
//*********************************************************** FuncaoWidget::FuncaoWidget(QWidget *parent): ObjetoBaseWidget(parent, OBJETO_FUNCAO) { try { QStringList tipos; QGridLayout *grid=NULL, *grid1=NULL; map<QString, vector<QWidget *> > mapa_campos; QFrame *frame=NULL; Ui_FuncaoWidget::setupUi(this); configurarLayouFormulario(funcao_grid, OBJETO_FUNCAO); connect(janela_pai->aplicar_ok_btn,SIGNAL(clicked(bool)), this, SLOT(aplicarConfiguracao(void))); //Aloca um destacador de código fonte para o campo de definição da função destaque_codigo=new DestaqueSintaxe(codigofonte_txt, true); //Aloca o widget de configuração de tipo de retorno simples tipo_ret=new TipoPgSQLWidget(this); /* Aloca a tabela que armazena as colunas da tabela de retorno. Esta tabela possui 2 colunas que são o Nome da coluna e o tipo de dado */ tab_retorno=new TabelaObjetosWidget(TabelaObjetosWidget::TODOS_BOTOES ^ TabelaObjetosWidget::BTN_ATUALIZAR_ITEM, true, this); tab_retorno->definirNumColunas(2); tab_retorno->definirRotuloCabecalho(trUtf8("Coluna"), 0); tab_retorno->definirIconeCabecalho(QPixmap(":/icones/icones/column.png"),0); tab_retorno->definirRotuloCabecalho(trUtf8("Tipo"), 1); tab_retorno->definirIconeCabecalho(QPixmap(":/icones/icones/usertype.png"),1); /* Aloca a tabela que armazena os parâmetros da função. Esta tabela possui 4 colunas que são: Nome do parâmetro, tipo do parâmetro, comportamento do parâmetro (IN/OUT), valor padrâo do parâmetro */ tab_parametros=new TabelaObjetosWidget(TabelaObjetosWidget::TODOS_BOTOES ^ TabelaObjetosWidget::BTN_ATUALIZAR_ITEM, true, this); tab_parametros->definirNumColunas(4); tab_parametros->definirRotuloCabecalho(trUtf8("Nome"),0); tab_parametros->definirIconeCabecalho(QPixmap(":/icones/icones/parameter.png"),0); tab_parametros->definirRotuloCabecalho(trUtf8("Tipo"),1); tab_parametros->definirIconeCabecalho(QPixmap(":/icones/icones/usertype.png"),1); tab_parametros->definirRotuloCabecalho(trUtf8("IN/OUT"),2); tab_parametros->definirRotuloCabecalho(trUtf8("Valor Padrão"),3); grid=new QGridLayout; grid->addWidget(tab_parametros,0,0,1,1); grid->setContentsMargins(2,2,2,2); funcaowidget_twg->widget(1)->setLayout(grid); grid=dynamic_cast<QGridLayout *>(funcaowidget_twg->widget(0)->layout()); grid->addWidget(tipo_ret, grid->count(), 0, 1, 4); grid->addWidget(tabela_ret_gb, grid->count()-1, 0, 1, 4); grid1=new QGridLayout; grid1->addWidget(tab_retorno, 0, 0, 1, 1); grid1->setContentsMargins(2,2,2,2); tabela_ret_gb->setLayout(grid1); tabela_ret_gb->setVisible(false); //Define os campos exclusivos para cada versão mapa_campos[gerarIntervaloVersoes(APOS_VERSAO, ParserEsquema::VERSAO_PGSQL_84)].push_back(tabela_rb); mapa_campos[gerarIntervaloVersoes(APOS_VERSAO, ParserEsquema::VERSAO_PGSQL_84)].push_back(func_janela_lbl); //Gera o frame de alerta frame=gerarFrameAlertaVersao(mapa_campos); grid->addWidget(frame, grid->count()+1, 0, 1, 0); frame->setParent(funcaowidget_twg->widget(0)); janela_pai->setMinimumSize(645, 715); //Configura o combo de tipos de segurança da função TipoSeguranca::obterTipos(tipos); seguranca_cmb->addItems(tipos); //Configura o combo de tipo da função TipoFuncao::obterTipos(tipos); tipo_func_cmb->addItems(tipos); //Configura o combo de tipo de comportamento da função TipoComportamento::obterTipos(tipos); comportamento_cmb->addItems(tipos); connect(simples_rb, SIGNAL(clicked(bool)), this, SLOT(alternarTiposRetorno(void))); connect(conjunto_rb, SIGNAL(clicked(bool)), this, SLOT(alternarTiposRetorno(void))); connect(tabela_rb, SIGNAL(clicked(bool)), this, SLOT(alternarTiposRetorno(void))); connect(linguagem_cmb, SIGNAL(currentIndexChanged(int)), this, SLOT(selecionarLinguagem(void))); connect(tab_parametros, SIGNAL(s_linhaAdicionada(int)), this, SLOT(exibirFormParametro())); connect(tab_parametros, SIGNAL(s_linhaEditada(int)), this, SLOT(exibirFormParametro())); connect(tab_retorno, SIGNAL(s_linhaAdicionada(int)), this, SLOT(exibirFormParametro())); connect(tab_retorno, SIGNAL(s_linhaEditada(int)), this, SLOT(exibirFormParametro())); } catch(Excecao &e) { //Redireciona o erro throw Excecao(e.obterMensagemErro(),e.obterTipoErro(),__PRETTY_FUNCTION__,__FILE__,__LINE__, &e); } }