Exemplo n.º 1
0
static void
play_back_delete_inpfile (GtkTreeRowReference *reference)
{
        GtkTreeModel *model;
        GtkTreePath *path;
        GtkTreeIter iter;
        gboolean valid;
        gchar *inpfile;

        model = gtk_tree_row_reference_get_model (reference);

        path = gtk_tree_row_reference_get_path (reference);
        valid = gtk_tree_model_get_iter (model, &iter, path);
        gtk_tree_path_free (path);
        g_assert (valid);

        gtk_tree_model_get (
                model, &iter, GVA_GAME_STORE_COLUMN_INPFILE, &inpfile, -1);
        g_assert (inpfile != NULL);

        errno = 0;
        if (g_unlink (inpfile) == 0)
                gtk_tree_store_remove (GTK_TREE_STORE (model), &iter);
        else
                g_warning ("%s: %s", inpfile, g_strerror (errno));

        g_free (inpfile);
}
Exemplo n.º 2
0
static void
configure_combo_box_set_active (GtkComboBox *combo_box, const gchar *value)
{
	GtkTreeRowReference *reference;
	GHashTable *index;

	index = g_object_get_data (G_OBJECT (combo_box), "index");
	g_return_if_fail (index != NULL);

	reference = g_hash_table_lookup (index, value);
	if (reference != NULL) {
		GtkTreeModel *model;
		GtkTreePath *path;
		GtkTreeIter iter;

		model = gtk_tree_row_reference_get_model (reference);
		path = gtk_tree_row_reference_get_path (reference);

		if (path == NULL)
			return;

		if (gtk_tree_model_get_iter (model, &iter, path))
			gtk_combo_box_set_active_iter (combo_box, &iter);

		gtk_tree_path_free (path);
	}
}
Exemplo n.º 3
0
static void
attachment_button_update_cell_view (EAttachmentButton *button)
{
	GtkCellView *cell_view;
	EAttachment *attachment;
	GtkTreeRowReference *reference;
	GtkTreeModel *model = NULL;
	GtkTreePath *path = NULL;

	cell_view = GTK_CELL_VIEW (button->priv->cell_view);

	attachment = e_attachment_button_get_attachment (button);
	if (attachment == NULL)
		goto exit;

	reference = e_attachment_get_reference (attachment);
	if (reference == NULL)
		goto exit;

	model = gtk_tree_row_reference_get_model (reference);
	path = gtk_tree_row_reference_get_path (reference);

exit:

	gtk_cell_view_set_model (cell_view, model);
	if (model)
		gtk_cell_view_set_displayed_row (cell_view, path);

	if (path != NULL)
		gtk_tree_path_free (path);
}
static void on_item_changed (MateBG *bg, AppearanceData *data) {
  GtkTreeModel *model;
  GtkTreeIter iter;
  GtkTreePath *path;
  MateWPItem *item;

  item = g_hash_table_find (data->wp_hash, predicate, bg);

  if (!item)
    return;

  model = gtk_tree_row_reference_get_model (item->rowref);
  path = gtk_tree_row_reference_get_path (item->rowref);

  if (gtk_tree_model_get_iter (model, &iter, path)) {
    GdkPixbuf *pixbuf;

    g_signal_handlers_block_by_func (bg, G_CALLBACK (on_item_changed), data);

    pixbuf = mate_wp_item_get_thumbnail (item,
                                          data->thumb_factory,
                                          data->thumb_width,
                                          data->thumb_height);
    if (pixbuf) {
      gtk_list_store_set (GTK_LIST_STORE (data->wp_model), &iter, 0, pixbuf, -1);
      g_object_unref (pixbuf);
    }

    g_signal_handlers_unblock_by_func (bg, G_CALLBACK (on_item_changed), data);
  }
}
/* to be called when the icon within the GtkRowReference that this
 * sensor references is changed - updates icon based upon value in the
 * ActiveSensor */
void active_sensor_icon_changed(ActiveSensor *active_sensor,
                                SensorsApplet *sensors_applet) {

    GtkTreeModel *model;
    GtkTreePath *path;
    GtkTreeIter iter;

    SensorType sensor_type;
    GdkPixbuf *icon_pixbuf;

    g_assert(active_sensor);
    g_assert(sensors_applet);

    model = gtk_tree_row_reference_get_model(active_sensor->sensor_row);
    path = gtk_tree_row_reference_get_path(active_sensor->sensor_row);

    /* if can successfully get iter can proceed */
    if (gtk_tree_model_get_iter(model, &iter, path)) {
        gtk_tree_model_get(GTK_TREE_MODEL(sensors_applet->sensors),
                           &iter,
                           SENSOR_TYPE_COLUMN, &sensor_type,
                           ICON_PIXBUF_COLUMN, &icon_pixbuf,
                           -1);

        active_sensor_update_icon(active_sensor,
                                  icon_pixbuf,
                                  sensor_type);
        g_object_unref(icon_pixbuf);
    }
    gtk_tree_path_free(path);
}
Exemplo n.º 6
0
static VALUE
treerowref_get_model(VALUE self)
{
    VALUE ret = GOBJ2RVAL(gtk_tree_row_reference_get_model(_SELF(self)));
    G_CHILD_SET(self, id_model, ret);
    return ret;
}
static void active_sensor_alarm_on(ActiveSensor *active_sensor,
                                   NotifType notif_type) {
    GtkTreeModel *model;
    GtkTreePath *tree_path;
    GtkTreeIter iter;

    g_assert(active_sensor);

    model = gtk_tree_row_reference_get_model(active_sensor->sensor_row);
    tree_path = gtk_tree_row_reference_get_path(active_sensor->sensor_row);

    if (gtk_tree_model_get_iter(model, &iter, tree_path)) {

        if (active_sensor->alarm_timeout_id[notif_type] == -1) {
            /* alarm is not currently on */
            gtk_tree_model_get(model,
                               &iter,
                               (notif_type == LOW_ALARM ?
                                LOW_ALARM_COMMAND_COLUMN :
                                HIGH_ALARM_COMMAND_COLUMN),
                               &(active_sensor->alarm_command[notif_type]),
                               ALARM_TIMEOUT_COLUMN, &(active_sensor->alarm_timeout),
                               -1);
            g_debug("Activating alarm to repeat every %d seconds", active_sensor->alarm_timeout);

            /* execute alarm once, then add to time to
               keep repeating it */
            active_sensor_execute_alarm(active_sensor, notif_type);
            int timeout = (active_sensor->alarm_timeout <= 0 ?
                           G_MAXINT :
                           active_sensor->alarm_timeout);
            switch (notif_type) {
            case LOW_ALARM:
                active_sensor->alarm_timeout_id[notif_type] = g_timeout_add_seconds(timeout,
                        (GSourceFunc)active_sensor_execute_low_alarm,
                        active_sensor);
                break;
            case HIGH_ALARM:
                active_sensor->alarm_timeout_id[notif_type] = g_timeout_add_seconds(timeout,
                        (GSourceFunc)active_sensor_execute_high_alarm,
                        active_sensor);
                break;
            default:
                g_debug("Unknown notif type: %d", notif_type);
            }


        }
    }
    gtk_tree_path_free(tree_path);

}
Exemplo n.º 8
0
static void
remote_editor_remove_branch (GtkTreeRowReference *ref)
{
	GtkTreeModel *model;
	GtkTreeIter   iter;

	model = gtk_tree_row_reference_get_model (ref);
	gtk_tree_model_get_iter (model, &iter,
				 gtk_tree_row_reference_get_path (ref));
	gtk_list_store_remove (GTK_LIST_STORE (model), &iter);

	gtk_tree_row_reference_free (ref);
}
static void
source_viewer_update_row (ESourceViewer *viewer,
                          ESource *source)
{
	GHashTable *source_index;
	GtkTreeRowReference *reference;
	GtkTreeModel *model;
	GtkTreePath *path;
	GtkTreeIter iter;
	const gchar *display_name;
	const gchar *source_uid;
	gboolean removable;
	gboolean writable;
	gboolean remote_creatable;
	gboolean remote_deletable;

	source_index = viewer->source_index;
	reference = g_hash_table_lookup (source_index, source);

	/* We show all sources, so the reference should be valid. */
	g_return_if_fail (gtk_tree_row_reference_valid (reference));

	model = gtk_tree_row_reference_get_model (reference);
	path = gtk_tree_row_reference_get_path (reference);
	gtk_tree_model_get_iter (model, &iter, path);
	gtk_tree_path_free (path);

	source_uid = e_source_get_uid (source);
	display_name = e_source_get_display_name (source);
	removable = e_source_get_removable (source);
	writable = e_source_get_writable (source);
	remote_creatable = e_source_get_remote_creatable (source);
	remote_deletable = e_source_get_remote_deletable (source);

	gtk_tree_store_set (
		GTK_TREE_STORE (model), &iter,
		COLUMN_DISPLAY_NAME, display_name,
		COLUMN_SOURCE_UID, source_uid,
		COLUMN_REMOVABLE, removable,
		COLUMN_WRITABLE, writable,
		COLUMN_REMOTE_CREATABLE, remote_creatable,
		COLUMN_REMOTE_DELETABLE, remote_deletable,
		COLUMN_SOURCE, source,
		-1);
}
Exemplo n.º 10
0
/** Update the model when a toggle button is toggled.
 *
 * @param toggle_button the button which have been toggled
 * @param row_reference associated row in the model
 */
static void update_model_from_toggle_button(
    GtkToggleButton * toggle_button, GtkTreeRowReference * row_reference)
{
    GtkTreeModel * model = gtk_tree_row_reference_get_model(row_reference);
    GtkTreePath * path = gtk_tree_row_reference_get_path(row_reference);
    GtkTreeIter iter;

    g_assert(NULL != model);
    g_assert(NULL != path);

    if (gtk_tree_model_get_iter(model, &iter, path)) {
        gtk_list_store_set(
            GTK_LIST_STORE(model), &iter,
            /* column: */ CHOICE_MODEL_SELECTED,
                          gtk_toggle_button_get_active(toggle_button),
            -1 /* end of list */);
    }
}
Exemplo n.º 11
0
void
gnac_profiles_mgr_on_remove(GtkWidget *widget,
                            gpointer   data)
{
  GList *selected = gnac_profiles_mgr_get_selected_rows();
  if (!selected) return;

  GtkTreeRowReference *reference = (GtkTreeRowReference *) selected->data;

  AudioProfileGeneric *profile;
  gnac_profiles_mgr_get(reference, COL_PROFILE, &profile);
  gnac_profiles_mgr_delete_profile_file(profile->generic->name);

  gnac_profiles_mgr_display_status_message(NULL, NULL);

  GtkTreeModel *model = gtk_tree_row_reference_get_model(reference);
  GtkTreePath *path = gtk_tree_row_reference_get_path(reference);

  GtkTreeIter iter;
  gboolean new_selected = FALSE;
  if (gtk_tree_model_get_iter(model, &iter, path)) {
    if (gtk_tree_model_iter_next(model, &iter)
        || (gtk_tree_path_prev(path) &&
            gtk_tree_model_get_iter(model, &iter, path)))
    {
      GtkTreeView *view = GTK_TREE_VIEW(
          gnac_profiles_mgr_get_widget("profile_treeview"));
      GtkTreeSelection *selection = gtk_tree_view_get_selection(view);
      gtk_tree_selection_select_iter(selection, &iter);
      new_selected = TRUE;
    }
  }

  gnac_profiles_mgr_remove(reference);

  gnac_profiles_mgr_activate_buttons(new_selected);
  gnac_profiles_mgr_show_description_frame(new_selected);

  gtk_tree_path_free(path);
  g_list_free_full(selected, (GDestroyNotify) gtk_tree_row_reference_free);
}
static void
favicon_ready_cb( gpointer pixbuf, gpointer vreference )
{
    GtkTreeIter iter;
    GtkTreeRowReference * reference = vreference;

    if( pixbuf != NULL )
    {
        GtkTreePath * path = gtk_tree_row_reference_get_path( reference );
        GtkTreeModel * model = gtk_tree_row_reference_get_model( reference );

        if( gtk_tree_model_get_iter( model, &iter, path ) )
            gtk_tree_store_set( GTK_TREE_STORE( model ), &iter,
                                CAT_FILTER_COL_PIXBUF, pixbuf,
                                -1 );

        gtk_tree_path_free( path );

        g_object_unref( pixbuf );
    }

    gtk_tree_row_reference_free( reference );
}
static void trg_torrent_model_ref_free(gpointer data)
{
    GtkTreeRowReference *rr = (GtkTreeRowReference *) data;
    GtkTreeModel *model = gtk_tree_row_reference_get_model(rr);
    GtkTreePath *path = gtk_tree_row_reference_get_path(rr);
    if (path) {
        GtkTreeIter iter;
        JsonObject *json;
        if (gtk_tree_model_get_iter(model, &iter, path)) {
            gtk_tree_model_get(model, &iter, TORRENT_COLUMN_JSON, &json,
                               -1);
            json_object_unref(json);
            g_object_set_data(G_OBJECT(model), PROP_REMOVE_IN_PROGRESS,
                              GINT_TO_POINTER(TRUE));
            gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
            g_object_set_data(G_OBJECT(model), PROP_REMOVE_IN_PROGRESS,
                              GINT_TO_POINTER(FALSE));
        }

        gtk_tree_path_free(path);
    }

    gtk_tree_row_reference_free(rr);
}
Exemplo n.º 14
0
static void
action_combo_box_action_changed_cb (GtkRadioAction *action,
                                    GtkRadioAction *current,
                                    EActionComboBox *combo_box)
{
	GtkTreeRowReference *reference;
	GtkTreeModel *model;
	GtkTreePath *path;
	GtkTreeIter iter;
	gboolean valid;

	reference = g_hash_table_lookup (
		combo_box->priv->index, GINT_TO_POINTER (
		gtk_radio_action_get_current_value (current)));
	g_return_if_fail (reference != NULL);

	model = gtk_tree_row_reference_get_model (reference);
	path = gtk_tree_row_reference_get_path (reference);
	valid = gtk_tree_model_get_iter (model, &iter, path);
	gtk_tree_path_free (path);
	g_return_if_fail (valid);

	gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combo_box), &iter);
}
Exemplo n.º 15
0
void active_sensor_update(ActiveSensor *active_sensor,
                          SensorsApplet *sensors_applet) {

    GtkTreeModel *model;
    GtkTreeIter iter;
    GtkTreePath *path;

    /* instance data from the tree for this sensor */
    gchar *sensor_path = NULL;
    gchar *sensor_id = NULL;
    gchar *sensor_label = NULL;
    SensorType sensor_type;
    gchar *sensor_interface;
    gboolean sensor_enabled;
    gdouble sensor_low_value;
    gdouble sensor_high_value;
    gboolean sensor_alarm_enabled;
    gdouble sensor_multiplier;
    gdouble sensor_offset;
    gdouble sensor_value;
    GdkPixbuf *icon_pixbuf;
    gchar *graph_color;

    /* to build the list of labels as we go */
    gchar *value_text = NULL;
    gchar *old_value_text;

    TemperatureScale scale;
    DisplayMode display_mode;

    GError *error = NULL;

    gchar *tooltip = NULL;
    gchar *value_tooltip = NULL;

    /* hidden gsettings options */
    gint font_size = 0;
    gboolean hide_units = FALSE;

    g_assert(active_sensor);
    g_assert(active_sensor->sensor_row);
    g_assert(sensors_applet);

    model = gtk_tree_row_reference_get_model(active_sensor->sensor_row);
    path = gtk_tree_row_reference_get_path(active_sensor->sensor_row);

    /* if can successfully get iter can proceed */
    if (gtk_tree_model_get_iter(model, &iter, path)) {
        gtk_tree_path_free(path);
        gtk_tree_model_get(GTK_TREE_MODEL(sensors_applet->sensors),
                           &iter,
                           PATH_COLUMN, &sensor_path,
                           ID_COLUMN, &sensor_id,
                           LABEL_COLUMN, &sensor_label,
                           INTERFACE_COLUMN, &sensor_interface,
                           SENSOR_TYPE_COLUMN, &sensor_type,
                           ENABLE_COLUMN, &sensor_enabled,
                           LOW_VALUE_COLUMN, &sensor_low_value,
                           HIGH_VALUE_COLUMN, &sensor_high_value,
                           ALARM_ENABLE_COLUMN, &sensor_alarm_enabled,
                           MULTIPLIER_COLUMN, &sensor_multiplier,
                           OFFSET_COLUMN, &sensor_offset,
                           ICON_PIXBUF_COLUMN, &icon_pixbuf,
                           GRAPH_COLOR_COLUMN, &graph_color,
                           -1);


        SensorsAppletPluginGetSensorValue get_sensor_value;
        /* only call function if is in hash table for plugin */
        if ((get_sensor_value = sensors_applet_plugins_get_sensor_value_func(sensors_applet, sensor_interface)) != NULL) {
            sensor_value = get_sensor_value(sensor_path,
                                            sensor_id,
                                            sensor_type,
                                            &error);


            if (error) {
                g_debug("Error updating active sensor: %s", error->message);
                sensors_applet_notify_active_sensor(active_sensor,
                                                    SENSOR_INTERFACE_ERROR);

                /* hard code text as ERROR */
                value_text = g_strdup(_("ERROR"));
                value_tooltip = g_strdup_printf("- %s", error->message);
                g_error_free(error);
                error = NULL;

                /* set sensor value to an error code -
                 * note this is not unique */
                sensor_value = -1;
            } else {
                /* use hidden gsettings key for hide_units */

                hide_units = g_settings_get_boolean(sensors_applet->settings, HIDE_UNITS);

                /* scale value and set text using this
                 * value */
                switch (sensor_type) {
                case TEMP_SENSOR:

                    scale = (TemperatureScale) g_settings_get_int(sensors_applet->settings, TEMPERATURE_SCALE);
                    /* scale value */
                    sensor_value = sensors_applet_convert_temperature(sensor_value,
                                   CELSIUS,
                                   scale);

                    sensor_value = (sensor_value * sensor_multiplier) + sensor_offset;
                    switch (scale) {
                    case FAHRENHEIT:
                        value_text = g_strdup_printf("%2.0f %s", sensor_value, (hide_units ? "" : UNITS_FAHRENHEIT));
                        /* tooltip should
                         * always display
                         * units */
                        value_tooltip = g_strdup_printf("%2.0f %s", sensor_value, UNITS_FAHRENHEIT);

                        break;
                    case CELSIUS:
                        value_text = g_strdup_printf("%2.0f %s", sensor_value, (hide_units ? "" : UNITS_CELSIUS));
                        value_tooltip = g_strdup_printf("%2.0f %s", sensor_value, UNITS_CELSIUS);
                        break;
                    case KELVIN:
                        value_text = g_strdup_printf("%2.0f", sensor_value);
                        value_tooltip = g_strdup(value_text);
                        break;
                    }
                    break;

                case FAN_SENSOR:
                    sensor_value = (sensor_value * sensor_multiplier) + sensor_offset;
                    value_text = g_strdup_printf("%4.0f %s", sensor_value, (hide_units ? "" : UNITS_RPM));
                    value_tooltip = g_strdup_printf("%4.0f %s", sensor_value, UNITS_RPM);

                    break;

                case VOLTAGE_SENSOR:
                    sensor_value = (sensor_value * sensor_multiplier) + sensor_offset;
                    value_text = g_strdup_printf("%4.2f %s", sensor_value, (hide_units ? "" : UNITS_VOLTAGE));
                    value_tooltip = g_strdup_printf("%4.2f %s", sensor_value, UNITS_VOLTAGE);

                    break;

                case CURRENT_SENSOR:
                    sensor_value = (sensor_value * sensor_multiplier) + sensor_offset;
                    value_text = g_strdup_printf("%4.2f %s", sensor_value, (hide_units ? "" : UNITS_CURRENT));
                    value_tooltip = g_strdup_printf("%4.2f %s", sensor_value, UNITS_CURRENT);
                    break;

                } /* end switch(sensor_type) */
            } /* end else on error */

            /* setup for tooltips */
            tooltip = g_strdup_printf("%s %s", sensor_label, value_tooltip);
            g_free(value_tooltip);

            /* only do icons and labels / graphs if needed */
            display_mode = g_settings_get_int (sensors_applet->settings, DISPLAY_MODE);

            /* most users wont have a font size set */
            font_size = g_settings_get_int (sensors_applet->settings, FONT_SIZE);


            /* do icon if needed */
            if (display_mode == DISPLAY_ICON ||
                    display_mode == DISPLAY_ICON_WITH_VALUE) {
                /* update icon if icon range has changed if no
                 * update has been done before */
                if ((sensor_value_range(sensor_value, sensor_low_value, sensor_high_value) != sensor_value_range(active_sensor->sensor_values[0], active_sensor->sensor_low_value, active_sensor->sensor_high_value)) || !(active_sensor->updated)) {
                    active_sensor_update_sensor_value(active_sensor,
                                                      sensor_value);
                    active_sensor->sensor_low_value = sensor_low_value;
                    active_sensor->sensor_high_value = sensor_high_value;
                    active_sensor_update_icon(active_sensor, icon_pixbuf, sensor_type);
                }
                /* always update tooltip */
                gtk_widget_set_tooltip_text(active_sensor->icon,
                                            tooltip);
            }
            active_sensor_update_sensor_value(active_sensor,
                                              sensor_value);
            active_sensor->sensor_low_value = sensor_low_value;
            active_sensor->sensor_high_value = sensor_high_value;

            /* do graph if needed */
            if (display_mode == DISPLAY_GRAPH) {
                /* update graph color in case has changed */
                gdk_color_parse(graph_color,
                                &(active_sensor->graph_color));

                gtk_widget_queue_draw (active_sensor->graph);
                gtk_widget_set_tooltip_text(active_sensor->graph,
                                            tooltip);

            }

            old_value_text = value_text;

            if (sensor_alarm_enabled) {
                if (sensor_value >= sensor_high_value ||
                        sensor_value <= sensor_low_value) {
                    /* make value text red and
                     * activate alarm */
                    if (display_mode == DISPLAY_LABEL_WITH_VALUE ||
                            display_mode == DISPLAY_ICON_WITH_VALUE ||
                            display_mode == DISPLAY_VALUE) {
                        value_text = g_markup_printf_escaped("<span foreground=\"#FF0000\">%s</span>", old_value_text);

                        g_free(old_value_text);
                    }
                    /* could have both coditions at once */
                    if (sensor_value >= sensor_high_value) {
                        active_sensor_alarm_on(active_sensor, HIGH_ALARM);
                    }

                    if (sensor_value <= sensor_low_value) {
                        active_sensor_alarm_on(active_sensor, LOW_ALARM);
                    }

                } else {
                    /* make sure alarms are off */
                    active_sensor_all_alarms_off(active_sensor);
                }
            } else { /* else for if alarm enabled */
                /* make sure all alarms are off */
                active_sensor_all_alarms_off(active_sensor);
            }

            /* do value label */
            if (display_mode == DISPLAY_LABEL_WITH_VALUE ||
                    display_mode == DISPLAY_ICON_WITH_VALUE ||
                    display_mode == DISPLAY_VALUE) {
                if (font_size) {
                    old_value_text = value_text;

                    value_text = g_strdup_printf("<span font_desc=\"%d\">%s</span>", font_size, old_value_text);
                    g_free(old_value_text);
                }
                gtk_label_set_markup(GTK_LABEL(active_sensor->value),
                                     value_text);


                gtk_widget_set_tooltip_text(active_sensor->value,
                                            tooltip);
            }
            /* finished with value text */
            g_free(value_text);

            /* do label label */
            if (display_mode == DISPLAY_LABEL_WITH_VALUE) {
                if (font_size) {
                    old_value_text = sensor_label;
                    sensor_label = g_strdup_printf("<span font_desc=\"%d\">%s</span>", font_size, old_value_text);
                    g_free(old_value_text);
                }
                gtk_label_set_markup(GTK_LABEL(active_sensor->label),
                                     sensor_label);
                gtk_widget_set_tooltip_text(active_sensor->label,
                                            tooltip);

            }

            g_free(tooltip);
        } else {
            g_debug("no get_sensor_value function yet installed for interface %s.", sensor_interface);
        }
        g_free(sensor_path);
        g_free(sensor_id);
        g_free(sensor_label);
        g_free(sensor_interface);
        g_free(graph_color);
        g_object_unref(icon_pixbuf);

    } else {
        g_debug("Error getting iter when updating sensor...");

    }
    active_sensor->updated = TRUE;

}