gboolean actions_changed_cb(GSignalInvocationHint *hint, guint n_param_values, const GValue *param_values, gpointer data) { ParasiteActionList *actionlist = PARASITE_ACTIONLIST(data); GtkUIManager *uimanager; GSList *i; uimanager = GTK_UI_MANAGER(g_value_get_object(¶m_values[0])); i = g_slist_find(actionlist->priv->uimanagers, uimanager); if (i == NULL) { actionlist->priv->uimanagers = g_slist_prepend(actionlist->priv->uimanagers, uimanager); g_object_weak_ref(G_OBJECT(uimanager), uimanager_dispose_cb, data); } if (actionlist->priv->update_timeout == 0) { actionlist->priv->update_timeout = g_timeout_add(20, (GSourceFunc) update, actionlist); } return TRUE; }
void uimanager_dispose_cb(gpointer data, GObject *object) { ParasiteActionList *actionlist = PARASITE_ACTIONLIST(data); actionlist->priv->uimanagers = g_slist_remove(actionlist->priv->uimanagers, object); if (actionlist->priv->update_timeout == 0) { actionlist->priv->update_timeout = g_timeout_add(20, (GSourceFunc) update, actionlist); } }
static void on_send_action_to_shell_activate(GtkWidget *menuitem, ParasiteWindow *parasite) { gpointer selection = parasite_actionlist_get_selected_object( PARASITE_ACTIONLIST(parasite->action_list)); if (selection != NULL) { char *str = g_strdup_printf("parasite.gobj(%p)", selection); parasite_python_shell_append_text( PARASITE_PYTHON_SHELL(parasite->python_shell), str, NULL); g_free(str); parasite_python_shell_focus(PARASITE_PYTHON_SHELL(parasite->python_shell)); } }