85 lines
1.5 KiB
C++
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;
|
|
}
|