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 ();