diff --git a/juci/juci.cc b/juci/juci.cc index cedf99d..5402b10 100644 --- a/juci/juci.cc +++ b/juci/juci.cc @@ -1,5 +1,4 @@ -#include "window.h" -#include "logging.h" +#include "juci.h" void init_logging() { add_common_attributes(); @@ -8,12 +7,43 @@ void init_logging() { INFO("Logging initalized"); } +int Juci::on_command_line(const Glib::RefPtr &cmd) { + Glib::set_prgname("juci"); + Glib::OptionContext ctx("[PATH ...]"); + Glib::OptionGroup gtk_group(gtk_get_option_group(true)); + ctx.add_group(gtk_group); + int argc; + char **argv = cmd->get_arguments(argc); + ctx.parse(argc, argv); + if(argc>=2) { + for(size_t c=1;c(new Window()); + add_window(*window); + window->show(); + if(directory!="") { + //TODO: use the following instead, window->notebook_.open_directory(directory); + window->notebook_.project_path=directory; + window->notebook_.directories().open_folder(directory); + } + for(auto &f: files) + window->notebook_.OnOpenFile(f); +} + int main(int argc, char *argv[]) { - Glib::RefPtr app = Gtk::Application::create( - argc, - argv, - "no.sout.juci"); init_logging(); - Window window; - return app->run(window); + return Juci().run(argc, argv); } diff --git a/juci/juci.h b/juci/juci.h new file mode 100644 index 0000000..9d55502 --- /dev/null +++ b/juci/juci.h @@ -0,0 +1,15 @@ +#include "window.h" +#include "logging.h" + +class Juci : public Gtk::Application { +public: + Juci(): Gtk::Application("no.sout.juci", Gio::APPLICATION_HANDLES_COMMAND_LINE) {} + + int on_command_line(const Glib::RefPtr &cmd); + void on_activate(); + +private: + std::unique_ptr window; + std::string directory; + std::vector files; +};