/* * Copyright 2014 (c) Anna Schumaker. */ #include #include #include #include static std::string share_dir = ""; namespace gui { Glib::RefPtr __O_BUILDER; const std::string share_file(const std::string &f) { return share_dir + f; } } static void setup_share(const std::string &path) { char buf[1024]; ssize_t len = readlink("/proc/self/exe", buf, sizeof(buf) - 1); if (len == -1) return; buf[len] = '\0'; share_dir = std::string(buf); share_dir = share_dir.substr(0, share_dir.size() - 11); share_dir = share_dir + "share/ocarina/"; } static Gtk::Window *ocarina_init(int *argc, char ***argv) { Gtk::Window *window; setup_share((*argv)[0]); gui :: __O_BUILDER = Gtk::Builder::create(); if (!gui::__O_BUILDER->add_from_file(gui::share_file("ocarina6.glade"))) exit(1); gst :: init(argc, argv); plist :: init(); core :: init(); manager :: init(); init_tabs(); window = window_init(); post_init_tabs(); return window; } int main(int argc, char **argv) { Glib::RefPtr ocarina = Gtk::Application::create(argc, argv, "ocarina"); Gtk::Window *window = ocarina_init(&argc, &argv); ocarina->run(*window); cleanup_tabs(); gst :: quit(); return 0; }