Ejemplo n.º 1
0
void
plugins_init(void)
{
    plugins = NULL;
    callbacks_init();
    autocompleters_init();

#ifdef PROF_HAVE_PYTHON
    python_env_init();
#endif
#ifdef PROF_HAVE_C
    c_env_init();
#endif

    plugin_themes_init();

    // load plugins
    gchar **plugins_load = prefs_get_plugins();
    if (plugins_load) {
        int i;
        for (i = 0; i < g_strv_length(plugins_load); i++)
        {
            gboolean loaded = FALSE;
            gchar *filename = plugins_load[i];
#ifdef PROF_HAVE_PYTHON
            if (g_str_has_suffix(filename, ".py")) {
                ProfPlugin *plugin = python_plugin_create(filename);
                if (plugin) {
                    plugins = g_slist_append(plugins, plugin);
                    loaded = TRUE;
                }
            }
#endif
#ifdef PROF_HAVE_C
            if (g_str_has_suffix(filename, ".so")) {
                ProfPlugin *plugin = c_plugin_create(filename);
                if (plugin) {
                    plugins = g_slist_append(plugins, plugin);
                    loaded = TRUE;
                }
            }
#endif
            if (loaded == TRUE) {
                log_info("Loaded plugin: %s", filename);
            }
        }

        // initialise plugins
        GSList *curr = plugins;
        while (curr) {
            ProfPlugin *plugin = curr->data;
            plugin->init_func(plugin, PROF_PACKAGE_VERSION, PROF_PACKAGE_STATUS);
            curr = g_slist_next(curr);
        }
    }

    prefs_free_plugins(plugins_load);

    return;
}
    static rb_mt_loop*
loop_create()
{
    rb_mt_loop *loop = calloc(1, sizeof(*loop));
    if (loop == NULL) return NULL;
    if (!events_init(&loop->events)) goto free_loop;
    if (!timers_init(&loop->timers)) goto free_events;
    if (!callbacks_init(&loop->callbacks)) goto free_timers;
    return loop;

free_timers:
    timers_finalize(&loop->timers);
free_events:
    events_finalize(&loop->events);
free_loop:
    free(loop);
    return NULL;
}
Ejemplo n.º 3
0
int main(int argc, char **argv)
{
	gtk_test_init(&argc, &argv);

	hash_init();
	resources_register_resource();
	gui_init();
	list_init();

	// Ignore user input during testing
	gtk_widget_set_sensitive(GTK_WIDGET(gui.window), false);

	if (g_test_slow())
		gtk_widget_show_now(GTK_WIDGET(gui.window));

	callbacks_init();
	test_init();

	return g_test_run();
}
Ejemplo n.º 4
0
void gui_init(const char *datadir)
{
	gtk_init(NULL, NULL);

	GtkBuilder *builder = gtk_builder_new();
	gtk_builder_set_translation_domain(builder, GETTEXT_PACKAGE);

	char *filename = g_build_filename(datadir, PACKAGE ".xml", NULL);
	GError *error = NULL;

	gtk_builder_add_from_file(builder, filename, &error);

	g_free(filename);

	if (error) {
		GtkWidget *dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL,
			GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "%s", error->message);
		gtk_window_set_title(GTK_WINDOW(dialog), PACKAGE_NAME);
		gtk_dialog_run(GTK_DIALOG(dialog));
		gtk_widget_destroy(dialog);
		g_error_free(error);
		g_object_unref(builder);
		exit(EXIT_FAILURE);
	}

	gui_get_objects(builder);
	g_object_ref(gui.menu_treeview);
	g_object_unref(builder);

	gui_init_hash_funcs();

	gtk_window_set_transient_for(GTK_WINDOW(gui.dialog), gui.window);

	gui_set_state(GUI_STATE_IDLE);

	callbacks_init();
}