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; }
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(); }
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(); }