ocarina/gui/ocarina.cpp

69 lines
1.3 KiB
C++
Raw Normal View History

/*
* Copyright 2014 (c) Anna Schumaker.
*/
#include <core/core.h>
#include <core/playlist.h>
#include <gui/ocarina.h>
#include <gui/tabs.h>
static std::string share_dir = "";
namespace gui
{
Glib::RefPtr<Gtk::Builder> __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<Gtk::Application> ocarina = Gtk::Application::create(argc, argv, "ocarina");
Gtk::Window *window = ocarina_init(&argc, &argv);
ocarina->run(*window);
cleanup_tabs();
gst :: quit();
return 0;
}