Browse Source

Move windows to singleton and remove transient error

merge-requests/365/head
Jørgen Lien Sellæg 10 years ago
parent
commit
dd63dfdc50
  1. 3
      src/dialogs.cc
  2. 7
      src/juci.cc
  3. 1
      src/juci.h
  4. 8
      src/singletons.cc
  5. 3
      src/singletons.h

3
src/dialogs.cc

@ -12,13 +12,12 @@ std::string open_dialog(const std::string &title,
else
gtk_file_chooser_set_current_folder((GtkFileChooser*)dialog.gobj(), boost::filesystem::current_path().string().c_str());
dialog.set_position(Gtk::WindowPosition::WIN_POS_CENTER_ALWAYS);
// dialog.set_transient_for(parent); TODO add parent
dialog.set_transient_for(*Singleton::window());
for (auto &button : buttons)
dialog.add_button(button.first, button.second);
return dialog.run() == Gtk::RESPONSE_OK ? dialog.get_filename() : "";
}
std::string Dialog::select_folder() {
return open_dialog("Please choose a folder",
{std::make_pair("Cancel", Gtk::RESPONSE_CANCEL),std::make_pair("Open", Gtk::RESPONSE_OK)},

7
src/juci.cc

@ -37,9 +37,8 @@ int app::on_command_line(const Glib::RefPtr<Gio::ApplicationCommandLine> &cmd) {
}
void app::on_activate() {
window = std::unique_ptr<Window>(new Window());
add_window(*window);
window->show();
add_window(*Singleton::window());
Singleton::window()->show();
bool first_directory=true;
for(auto &directory: directories) {
if(first_directory) {
@ -64,7 +63,7 @@ void app::on_activate() {
}
}
for(auto &file: files)
window->notebook.open(file);
Singleton::window()->notebook.open(file);
}
app::app() : Gtk::Application("no.sout.juci", Gio::APPLICATION_NON_UNIQUE | Gio::APPLICATION_HANDLES_COMMAND_LINE) {

1
src/juci.h

@ -11,7 +11,6 @@ class app : public Gtk::Application {
void on_activate();
private:
std::unique_ptr<Window> window;
std::vector<boost::filesystem::path> directories;
std::vector<boost::filesystem::path> files;
void init_logging();

8
src/singletons.cc

@ -6,6 +6,7 @@ std::unique_ptr<Terminal::Config> Singleton::Config::terminal_=std::unique_ptr<T
std::unique_ptr<Window::Config> Singleton::Config::window_ = std::unique_ptr<Window::Config>(new Window::Config());
std::unique_ptr<Terminal> Singleton::terminal_=std::unique_ptr<Terminal>();
std::unique_ptr<Directories> Singleton::directories_=std::unique_ptr<Directories>();
std::unique_ptr<Window> Singleton::window_=std::unique_ptr<Window>();
Terminal *Singleton::terminal() {
if(!terminal_)
@ -18,6 +19,13 @@ Directories *Singleton::directories() {
directories_=std::unique_ptr<Directories>(new Directories());
return directories_.get();
}
Window *Singleton::window() {
if(!window_)
window_=std::unique_ptr<Window>(new Window());
return window_.get();
}
std::unique_ptr<Gtk::Label> Singleton::status_=std::unique_ptr<Gtk::Label>();
Gtk::Label *Singleton::status() {
if(!status_)

3
src/singletons.h

@ -10,6 +10,7 @@
#include "terminal.h"
#include "notebook.h"
#include "menu.h"
#include "window.h"
class Singleton {
public:
@ -34,11 +35,13 @@ public:
static Directories *directories();
static Gtk::Label *status();
static Gtk::Label *info();
static Window *window();
private:
static std::unique_ptr<Terminal> terminal_;
static std::unique_ptr<Gtk::Label> status_;
static std::unique_ptr<Gtk::Label> info_;
static std::unique_ptr<Directories> directories_;
static std::unique_ptr<Window> window_;
};
#endif // JUCI_SINGLETONS_H_

Loading…
Cancel
Save