ocarina/ocarina/ocarina.cpp

85 lines
1.5 KiB
C++

#include <version.h>
#include <ocarina/callback.h>
#include <ocarina/gtk.h>
#include <ocarina/body.h>
#include <ocarina/settings.h>
#include <ocarina/window.h>
#include <ocarina/library.h>
#include <libsaria/audio.h>
#include <libsaria/libsaria.h>
#include <libsaria/print.h>
#include <libsaria/idle.h>
static string path_prefix;
void set_path_prefix(string prefix)
{
unsigned int stop = 0;
for (stop = prefix.size() - 1; stop > 0; stop--) {
if (prefix[stop] == '/')
break;
}
for (unsigned int i = 0; i < stop; i++)
path_prefix += prefix[i];
println("Path prefix: " + path_prefix);
}
namespace ocarina
{
static gboolean idle(gpointer data)
{
if (libsaria::idle::run_task() == 0)
return FALSE; /* There are no idle events left */
return TRUE; /* Process remaining idle events */
}
void idle_add()
{
g_idle_add(idle, NULL);
}
string full_path(string path)
{
string res = path_prefix + "/" + path;
println("Expanding to path: " + res);
return res;
}
void init(int argc, char **argv)
{
window_init("Ocarina " + vers_str(), full_path("images/ocarina.png"));
window_add(get_tabs());
ocarina::library::init();
settings_init();
}
void quit()
{
gtk_main_quit();
}
}
int main(int argc, char **argv)
{
println("Ocarina " + vers_str());
set_path_prefix(argv[0]);
libsaria::init(argc, argv);
setup_callbacks();
gtk_init(&argc, &argv);
ocarina::init(argc, argv);
if (argc > 1)
libsaria::audio::load(argv[1]);
gtk_main();
libsaria::quit();
return 0;
}