/* * Copyright 2014 (c) Anna Schumaker. */ #include #include #include static std::string ocarina_dir = ""; static Glib::RefPtr ocarina_app; namespace gui { Glib::RefPtr __O_BUILDER; const std::string share_file(const std::string &f) { return ocarina_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'; ocarina_dir = std::string(buf); ocarina_dir = ocarina_dir.substr(0, ocarina_dir.size() - 11); ocarina_dir = ocarina_dir + "share/ocarina/"; } int main(int argc, char **argv) { Gtk::Window *window; setup_share(argv[0]); ocarina_app = Gtk::Application::create(argc, argv, "org.gtkmm.ocarina"); gui :: __O_BUILDER = Gtk::Builder::create(); if (!gui::__O_BUILDER->add_from_file(gui::share_file("ocarina6.glade"))) exit(1); gst :: init(&argc, &argv); core :: init(); plist :: init(); manager :: init(); init_tabs(); window = window_init(); post_init_tabs(); ocarina_app->run(*window); cleanup_tabs(); gst :: quit(); core :: deinit(); return 0; }