diff --git a/Makefile.am b/Makefile.am index 221ea33..8dd514f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -347,6 +347,7 @@ bin_PROGRAMS += sgpemv2 sgpemv2_CPPFLAGS = \ -I@top_srcdir@ \ -I@top_srcdir@/src/backend \ + -DEXAMPLESDIR="\"$(examplesdir)\"" \ -DLOCALEDIR="\"$(localedir)\"" \ -DSHAREDIR="\"$(sharedir)\"" \ -DUIDIR="\"$(uidir)\"" \ diff --git a/src/gui_builder.cc b/src/gui_builder.cc index 122112c..320b363 100644 --- a/src/gui_builder.cc +++ b/src/gui_builder.cc @@ -150,9 +150,25 @@ GuiBuilder::on_file_new_activate() } - void GuiBuilder::on_file_open_activate() +{ + if (!_filename.empty()) // Please test the following line extensively: + open_file (Glib::path_get_dirname(_filename)); + else + open_file (); +} + + +void +GuiBuilder::on_file_open_example_activate() +{ + open_file (EXAMPLESDIR); +} + + +void +GuiBuilder::open_file(const std::string& basedir) { ask_save(); @@ -172,9 +188,8 @@ GuiBuilder::on_file_open_activate() // open file dialog... Gtk::FileChooserDialog dialog(_("Please choose a file"), Gtk::FILE_CHOOSER_ACTION_OPEN); dialog.set_transient_for(get_initial_window()); - if(!_filename.empty()) // Please test the following line extensively: - dialog.set_current_folder(Glib::path_get_dirname(_filename)); - + dialog.set_current_folder (basedir); + //Add response buttons the the dialog: dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); dialog.add_button(Gtk::Stock::OPEN, Gtk::RESPONSE_OK); @@ -227,7 +242,8 @@ GuiBuilder::on_file_open_activate() _refXml->get_widget("MainStatusBar", sbar); sbar->push(msg); } -} +} + void GuiBuilder::on_file_save_activate() @@ -604,6 +620,10 @@ GuiBuilder::GuiBuilder(const std::string& uifile) RefPtr::cast_dynamic (_refXml->get_object("Action.File.Open")) ->signal_activate().connect(sigc::mem_fun(*this, &GuiBuilder::on_file_open_activate)); + // file open dialog for examples + RefPtr::cast_dynamic (_refXml->get_object("Action.File.OpenExample")) + ->signal_activate().connect(sigc::mem_fun(*this, &GuiBuilder::on_file_open_example_activate)); + // file save dialog RefPtr::cast_dynamic (_refXml->get_object("Action.File.Save")) ->signal_activate().connect(sigc::mem_fun(*this, &GuiBuilder::on_file_save_activate)); @@ -734,12 +754,3 @@ GuiBuilder::get_initial_window() const return *main_window; } - -void -GuiBuilder::open_file(const std::string& filename) -{ - // FIXME: to be written. - // Debug line (erase me when done): - std::cout << _("Filename to open: ") << filename << std::endl; -} - diff --git a/src/gui_builder.hh b/src/gui_builder.hh index e7337fd..177fefb 100644 --- a/src/gui_builder.hh +++ b/src/gui_builder.hh @@ -53,6 +53,7 @@ namespace sgpem void on_file_new_activate(); void on_file_open_activate(); + void on_file_open_example_activate(); void on_file_save_activate(); void on_file_saveas_activate(); @@ -70,7 +71,7 @@ namespace sgpem void on_selected_resource_policy(ResourcePolicy* pol); void on_toggle_simulation_mode(); - void open_file(const std::string& filename); + void open_file(const std::string& basedir = ""); void populate_with_cpu_policies(Gtk::Menu& menu); void populate_with_resource_policies(Gtk::Menu& menu); diff --git a/ui/main-window.ui b/ui/main-window.ui index 0481fb0..5b03a81 100644 --- a/ui/main-window.ui +++ b/ui/main-window.ui @@ -34,6 +34,12 @@ Action.File.Open + + + Action.File.OpenExample + Open E_xample + + gtk-save @@ -142,6 +148,7 @@ +