//-------------------------------------------------------------------------------- void DbMySQLTableEditorFKPage::combo_box_changed(const int model_column) { Gtk::ComboBox *combo(0); if (::bec::FKConstraintListBE::OnUpdate == model_column) combo = _fk_update_combo; else if (::bec::FKConstraintListBE::OnDelete == model_column) combo = _fk_delete_combo; if ( combo ) if (!_be->get_fks()->set_field(_fk_node, model_column, get_selected_combo_item(combo))) { if (::bec::FKConstraintListBE::OnUpdate == model_column) { if (_fk_node.is_valid()) { std::string _prev; _be->get_fks()->get_field(_fk_node, ::bec::FKConstraintListBE::OnUpdate, _prev); set_selected_combo_item(combo, _prev); } } else if (::bec::FKConstraintListBE::OnDelete == model_column) { if (_fk_node.is_valid()) { std::string _prev; _be->get_fks()->get_field(_fk_node, ::bec::FKConstraintListBE::OnDelete, _prev); set_selected_combo_item(combo, _prev); } } } }
//------------------------------------------------------------------------------ void DbMySQLTableEditor::refresh_table_page() { Gtk::Entry *entry(0); xml()->get_widget("table_name", entry); if (_be->get_name() != entry->get_text()) { entry->set_text(_be->get_name()); _signal_title_changed.emit(_be->get_title()); } Gtk::TextView *tview; xml()->get_widget("table_comments", tview); if (_be->get_comment() != tview->get_buffer()->get_text()) tview->get_buffer()->set_text(_be->get_comment()); Gtk::ComboBox *combo = 0; xml()->get_widget("engine_combo", combo); set_selected_combo_item(combo, _be->get_table_option_by_name("ENGINE")); xml()->get_widget("collation_combo", combo); std::string collation = _be->get_table_option_by_name("CHARACTER SET - COLLATE"); if (collation == " - " || collation.empty()) set_selected_combo_item(combo, "*Default*"); else set_selected_combo_item(combo, collation); }
virtual void do_refresh_form_data() { Gtk::Entry *entry; xml()->get_widget("name_entry", entry); Gtk::TextView *tview; xml()->get_widget("text_view", tview); Gtk::ComboBox *combo; xml()->get_widget("collation_combo", combo); Gtk::Button *btn; xml()->get_widget("refactor_btn", btn); if (_be) { set_selected_combo_item(combo, _be->get_schema_option_by_name("CHARACTER SET - COLLATE")); _old_name = _be->get_name(); entry->set_text(_old_name); tview->get_buffer()->set_text(_be->get_comment()); bool is_editing_live_obj= is_editing_live_object(); tview->set_sensitive(!is_editing_live_obj); Gtk::Label *tlabel; xml()->get_widget("label5", tlabel); tlabel->set_sensitive(!is_editing_live_obj); btn->set_sensitive(_be->refactor_possible()); } }
//------------------------------------------------------------------------------ void DbMySQLTableEditorIndexPage::update_index_details() { MySQLTableIndexListBE *indices_be = _be->get_indexes(); if (indices_be) { std::string index_name; indices_be->refresh(); Gtk::TreeView *tv = 0; _xml->get_widget("index_columns", tv); tv->remove_all_columns(); tv->unset_model(); const bool got_indices = indices_be->count() > 1; if (_index_node.is_valid() && got_indices && _index_node.back() < indices_be->real_count()) { indices_be->get_field(_index_node, 0, index_name); if (!index_name.empty()) { indices_be->select_index(_index_node); indices_be->refresh(); } _indexes_columns_model = ListModelWrapper::create(indices_be->get_columns(), tv, "IndexesColumnsModel"); // negative column means value getting/setting is delegated back to us _indexes_columns_model->model().append_check_column(-8, "", EDITABLE); _indexes_columns_model->model().append_string_column(::bec::IndexColumnsListBE::Name, "Column", RO, NO_ICON); _indexes_columns_model->model().append_combo_column(::bec::IndexColumnsListBE::OrderIndex, "#", recreate_order_model(), EDITABLE); _indexes_columns_model->model().append_combo_column(-2, "Order", _sort_order_model, EDITABLE, true); _indexes_columns_model->model().append_int_column(::bec::IndexColumnsListBE::Length, "Length", EDITABLE); _indexes_columns_model->set_fake_column_value_getter( sigc::mem_fun(this, &DbMySQLTableEditorIndexPage::get_value)); _indexes_columns_model->set_fake_column_value_setter( sigc::mem_fun(this, &DbMySQLTableEditorIndexPage::set_value)); tv->set_model(_indexes_columns_model); std::string text; indices_be->get_field(_index_node, ::MySQLTableIndexListBE::StorageType, text); _index_storage_combo_conn.block(); set_selected_combo_item(_index_storage_combo, text); _index_storage_combo_conn.unblock(); } else { set_selected_combo_item(_index_storage_combo, ""); } Gtk::Entry *entry(0); std::string text; // Update row block size _xml->get_widget("index_key_block_size", entry); indices_be->get_field(_index_node, ::MySQLTableIndexListBE::RowBlockSize, text); entry->set_text(text); // Update index parser _xml->get_widget("index_parser", entry); indices_be->get_field(_index_node, ::MySQLTableIndexListBE::Parser, text); entry->set_text(text); Gtk::TextView *textview(0); // update index comment _xml->get_widget("index_comment", textview); indices_be->get_field(_index_node, ::MySQLTableIndexListBE::Comment, text); textview->get_buffer()->set_text(text); _xml->get_widget("index_key_block_size", entry); entry->set_sensitive(got_indices && _index_node.is_valid() && _index_node.back() < indices_be->real_count()); _xml->get_widget("index_parser", entry); entry->set_sensitive(got_indices && _index_node.is_valid() && _index_node.back() < indices_be->real_count()); _xml->get_widget("index_comment", textview); textview->set_sensitive(got_indices && _index_node.is_valid() && _index_node.back() < indices_be->real_count()); this->update_gui_for_server(); _index_storage_combo->set_sensitive(got_indices && _index_node.is_valid() && _index_node.back() < indices_be->real_count()); } }
//------------------------------------------------------------------------------ void DbMySQLTableEditorFKPage::update_fk_details() { ::bec::FKConstraintListBE *fk_be = _be->get_fks(); fk_be->refresh(); ::bec::FKConstraintColumnsListBE *fk_columns_be = fk_be->get_columns(); fk_columns_be->refresh(); std::string text; if (_fk_node.is_valid()) fk_be->get_field(_fk_node, ::bec::FKConstraintListBE::OnUpdate, text); set_selected_combo_item(_fk_update_combo, text); if (_fk_node.is_valid()) fk_be->get_field(_fk_node, ::bec::FKConstraintListBE::OnDelete, text); set_selected_combo_item(_fk_delete_combo, text); if (_fk_node.is_valid()) fk_be->get_field(_fk_node, ::bec::FKConstraintListBE::Comment, text); Gtk::TextView *fk_comment(0); _xml->get_widget("fk_comment", fk_comment); fk_comment->get_buffer()->set_text(text); Gtk::Label *label; _xml->get_widget("fk_index_name", label); if (_fk_node.is_valid()) fk_be->get_field(_fk_node, ::bec::FKConstraintListBE::Index, text); else text = ""; label->set_text(text); ssize_t model_only= 0; if (_fk_node.is_valid()) fk_be->get_field(_fk_node, ::bec::FKConstraintListBE::ModelOnly, model_only); _fk_model_only->set_active(model_only!=0); // Update columns _fk_columns_tv->unset_model(); if ( fk_columns_be->count() >= 1 && _fk_node.is_valid() && _fk_node.back() < _be->get_fks()->real_count()) { _fk_columns_tv->remove_all_columns(); _fk_columns_model = ListModelWrapper::create(fk_columns_be, _fk_columns_tv, "FKColumnsModel"); _fk_columns_model->model().append_check_column(bec::FKConstraintColumnsListBE::Enabled, "", EDITABLE); _fk_columns_model->model().append_string_column(bec::FKConstraintColumnsListBE::Column, "Column", RO, NO_ICON); const std::vector<std::string> list; _fk_columns_model->model().append_combo_column(::bec::FKConstraintColumnsListBE::RefColumn ,"Referenced Column" ,model_from_string_list(list) ,EDITABLE ,true); _fk_columns_tv->set_model(_fk_columns_model); // Connect signal so we can fill referenced columns combobox cell with correct values _fkcol_cell_edit_conn.disconnect(); Gtk::CellRendererCombo* rend = static_cast<Gtk::CellRendererCombo*>(_fk_columns_tv->get_column_cell_renderer(2)); if ( rend ) { _fkcol_cell_edit_conn = rend->signal_editing_started(). connect(sigc::mem_fun(this, &DbMySQLTableEditorFKPage::fkcol_cell_editing_started) ); } else g_message("REND is 0!"); _fk_update_combo->set_sensitive(true); _fk_delete_combo->set_sensitive(true); fk_comment->set_sensitive(true); _fk_model_only->set_sensitive(true); } else { _fk_update_combo->set_sensitive(false); _fk_delete_combo->set_sensitive(false); fk_comment->set_sensitive(false); _fk_model_only->set_sensitive(false); } }