diff --git a/src/layui/layui/MarkerBrowserDialog.ui b/src/layui/layui/MarkerBrowserDialog.ui index a65ca1385..7aee07fe1 100644 --- a/src/layui/layui/MarkerBrowserDialog.ui +++ b/src/layui/layui/MarkerBrowserDialog.ui @@ -292,6 +292,74 @@ to load a marker database + + + Open + + + Ctrl+O + + + QAction::NoRole + + + + + Save As + + + QAction::NoRole + + + + + Reload + + + F5 + + + QAction::NoRole + + + + + Save + + + Ctrl+S + + + QAction::NoRole + + + + + Export To Layout + + + QAction::NoRole + + + + + Unload + + + QAction::NoRole + + + + + Unload All + + + Unload All + + + QAction::NoRole + + diff --git a/src/layui/layui/rdbMarkerBrowserDialog.cc b/src/layui/layui/rdbMarkerBrowserDialog.cc index 800025a13..b94829ed8 100644 --- a/src/layui/layui/rdbMarkerBrowserDialog.cc +++ b/src/layui/layui/rdbMarkerBrowserDialog.cc @@ -84,34 +84,29 @@ MarkerBrowserDialog::MarkerBrowserDialog (lay::Dispatcher *root, lay::LayoutView view ()->rdb_list_changed_event.add (this, &MarkerBrowserDialog::rdbs_changed); } - m_open_action = new QAction (QObject::tr ("Open"), mp_ui->file_menu); - m_saveas_action = new QAction (QObject::tr ("Save As"), mp_ui->file_menu); - m_export_action = new QAction (QObject::tr ("Export To Layout"), mp_ui->file_menu); - m_reload_action = new QAction (QObject::tr ("Reload"), mp_ui->file_menu); - m_unload_action = new QAction (QObject::tr ("Unload"), mp_ui->file_menu); - m_unload_all_action = new QAction (QObject::tr ("Unload All"), mp_ui->file_menu); + connect (mp_ui->open_action, SIGNAL (triggered ()), this, SLOT (open_clicked ())); + connect (mp_ui->save_action, SIGNAL (triggered ()), this, SLOT (save_clicked ())); + connect (mp_ui->saveas_action, SIGNAL (triggered ()), this, SLOT (saveas_clicked ())); + connect (mp_ui->export_action, SIGNAL (triggered ()), this, SLOT (export_clicked ())); + connect (mp_ui->reload_action, SIGNAL (triggered ()), this, SLOT (reload_clicked ())); + connect (mp_ui->unload_action, SIGNAL (triggered ()), this, SLOT (unload_clicked ())); + connect (mp_ui->unload_all_action, SIGNAL (triggered ()), this, SLOT (unload_all_clicked ())); - connect (m_open_action, SIGNAL (triggered ()), this, SLOT (open_clicked ())); - connect (m_saveas_action, SIGNAL (triggered ()), this, SLOT (saveas_clicked ())); - connect (m_export_action, SIGNAL (triggered ()), this, SLOT (export_clicked ())); - connect (m_reload_action, SIGNAL (triggered ()), this, SLOT (reload_clicked ())); - connect (m_unload_action, SIGNAL (triggered ()), this, SLOT (unload_clicked ())); - connect (m_unload_all_action, SIGNAL (triggered ()), this, SLOT (unload_all_clicked ())); - - mp_ui->file_menu->addAction (m_open_action); - mp_ui->file_menu->addAction (m_saveas_action); + mp_ui->file_menu->addAction (mp_ui->open_action); + mp_ui->file_menu->addAction (mp_ui->save_action); + mp_ui->file_menu->addAction (mp_ui->saveas_action); QAction *sep0 = new QAction (mp_ui->file_menu); sep0->setSeparator (true); - mp_ui->file_menu->addAction (m_export_action); + mp_ui->file_menu->addAction (mp_ui->export_action); QAction *sep1 = new QAction (mp_ui->file_menu); sep1->setSeparator (true); mp_ui->file_menu->addAction (sep1); - mp_ui->file_menu->addAction (m_reload_action); + mp_ui->file_menu->addAction (mp_ui->reload_action); QAction *sep2 = new QAction (mp_ui->file_menu); sep2->setSeparator (true); mp_ui->file_menu->addAction (sep2); - mp_ui->file_menu->addAction (m_unload_action); - mp_ui->file_menu->addAction (m_unload_all_action); + mp_ui->file_menu->addAction (mp_ui->unload_action); + mp_ui->file_menu->addAction (mp_ui->unload_all_action); connect (mp_ui->layout_cb, SIGNAL (activated (int)), this, SLOT (cv_index_changed (int))); connect (mp_ui->rdb_cb, SIGNAL (activated (int)), this, SLOT (rdb_index_changed (int))); @@ -367,6 +362,34 @@ BEGIN_PROTECTED END_PROTECTED } +void +MarkerBrowserDialog::save_clicked () +{ +BEGIN_PROTECTED + + if (m_rdb_index < int (view ()->num_rdbs ()) && m_rdb_index >= 0) { + + rdb::Database *rdb = view ()->get_rdb (m_rdb_index); + if (rdb) { + + if (rdb->filename ().empty ()) { + + saveas_clicked (); + + } else { + + rdb->save (rdb->filename ()); + rdb->reset_modified (); + + } + + } + + } + +END_PROTECTED +} + void MarkerBrowserDialog::saveas_clicked () { @@ -385,6 +408,9 @@ BEGIN_PROTECTED rdb->save (fn); rdb->reset_modified (); + // update the RDB title strings + rdbs_changed (); + } } @@ -439,6 +465,7 @@ BEGIN_PROTECTED int rdb_index = view ()->add_rdb (db.release ()); mp_ui->rdb_cb->setCurrentIndex (rdb_index); + // it looks like the setCurrentIndex does not issue this signal: rdb_index_changed (rdb_index); @@ -595,6 +622,10 @@ MarkerBrowserDialog::rdbs_changed () text += rdb->description (); text += ")"; } + if (! rdb->filename ().empty () && rdb->name () != rdb->filename ()) { + text += " - "; + text += rdb->filename (); + } mp_ui->rdb_cb->addItem (tl::to_qstring (text)); if (rdb->name () == m_rdb_name) { rdb_index = i; @@ -688,11 +719,12 @@ MarkerBrowserDialog::update_content () mp_ui->central_stack->setCurrentIndex (1); } - m_saveas_action->setEnabled (rdb != 0); - m_export_action->setEnabled (rdb != 0); - m_unload_action->setEnabled (rdb != 0); - m_unload_all_action->setEnabled (rdb != 0); - m_reload_action->setEnabled (rdb != 0); + mp_ui->save_action->setEnabled (rdb != 0); + mp_ui->saveas_action->setEnabled (rdb != 0); + mp_ui->export_action->setEnabled (rdb != 0); + mp_ui->unload_action->setEnabled (rdb != 0); + mp_ui->unload_all_action->setEnabled (rdb != 0); + mp_ui->reload_action->setEnabled (rdb != 0); mp_ui->browser_frame->enable_updates (false); // Avoid building the internal lists several times ... mp_ui->browser_frame->set_rdb (0); // force update diff --git a/src/layui/layui/rdbMarkerBrowserDialog.h b/src/layui/layui/rdbMarkerBrowserDialog.h index 482913f6a..a42005566 100644 --- a/src/layui/layui/rdbMarkerBrowserDialog.h +++ b/src/layui/layui/rdbMarkerBrowserDialog.h @@ -74,6 +74,7 @@ private: public slots: void cv_index_changed (int); void rdb_index_changed (int); + void save_clicked (); void saveas_clicked (); void export_clicked (); void reload_clicked (); @@ -98,12 +99,6 @@ private: std::string m_rdb_name; int m_rdb_index; std::string m_open_filename; - QAction *m_open_action; - QAction *m_saveas_action; - QAction *m_export_action; - QAction *m_unload_action; - QAction *m_unload_all_action; - QAction *m_reload_action; void update_content (); void scan_layer ();