static void uni_image_view_update_adjustments (UniImageView * view) { Size zoomed = uni_image_view_get_zoomed_size (view); Size alloc = uni_image_view_get_allocated_size (view); view->hadj->lower = 0.0; view->hadj->upper = zoomed.width; view->hadj->value = view->offset_x; view->hadj->step_increment = 20.0; view->hadj->page_increment = alloc.width / 2; view->hadj->page_size = alloc.width; view->vadj->lower = 0.0; view->vadj->upper = zoomed.height; view->vadj->value = view->offset_y; view->vadj->step_increment = 20.0; view->vadj->page_increment = alloc.height / 2; view->vadj->page_size = alloc.height; g_signal_handlers_block_by_data (G_OBJECT (view->hadj), view); g_signal_handlers_block_by_data (G_OBJECT (view->vadj), view); gtk_adjustment_changed (view->hadj); gtk_adjustment_changed (view->vadj); g_signal_handlers_unblock_by_data (G_OBJECT (view->hadj), view); g_signal_handlers_unblock_by_data (G_OBJECT (view->vadj), view); }
static void update_size_spin_buttons_from_unit_value (GthFileToolResize *self) { g_signal_handlers_block_by_data (GET_WIDGET ("resize_width_spinbutton"), self); g_signal_handlers_block_by_data (GET_WIDGET ("resize_height_spinbutton"), self); if (self->priv->unit == GTH_UNIT_PERCENTAGE) { double p; gtk_spin_button_set_digits (GTK_SPIN_BUTTON (GET_WIDGET ("resize_width_spinbutton")), 2); gtk_spin_button_set_digits (GTK_SPIN_BUTTON (GET_WIDGET ("resize_height_spinbutton")), 2); p = ((double) self->priv->new_width) / self->priv->original_width * 100.0; gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("resize_width_spinbutton")), p); p = ((double) self->priv->new_height) / self->priv->original_height * 100.0; gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("resize_height_spinbutton")), p); } else if (self->priv->unit == GTH_UNIT_PIXELS) { gtk_spin_button_set_digits (GTK_SPIN_BUTTON (GET_WIDGET ("resize_width_spinbutton")), 0); gtk_spin_button_set_digits (GTK_SPIN_BUTTON (GET_WIDGET ("resize_height_spinbutton")), 0); gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("resize_width_spinbutton")), self->priv->new_width); gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("resize_height_spinbutton")), self->priv->new_height); } g_signal_handlers_unblock_by_data (GET_WIDGET ("resize_width_spinbutton"), self); g_signal_handlers_unblock_by_data (GET_WIDGET ("resize_height_spinbutton"), self); }
static void extension_switch_activated_cb (GObject *gobject, GParamSpec *pspec, gpointer user_data) { RowData *row_data = user_data; BrowserData *browser_data = row_data->browser_data; GthExtensionDescription *description = row_data->description; GError *error = NULL; if (! gth_extension_description_is_active (description)) { if (! gth_extension_manager_activate (gth_main_get_default_extension_manager (), description->id, &error)) { _gtk_error_dialog_from_gerror_run (GTK_WINDOW (browser_data->dialog), _("Could not activate the extension"), error); g_clear_error (&error); g_signal_handlers_block_by_data (gobject, user_data); gtk_switch_set_active (GTK_SWITCH (gobject), FALSE); g_signal_handlers_unblock_by_data (gobject, user_data); } else browser_data->enabled_disabled_cardinality_changed = TRUE; } else { if (! gth_extension_manager_deactivate (gth_main_get_default_extension_manager (), description->id, &error)) { _gtk_error_dialog_from_gerror_run (GTK_WINDOW (browser_data->dialog), _("Could not deactivate the extension"), error); g_clear_error (&error); g_signal_handlers_block_by_data (gobject, user_data); gtk_switch_set_active (GTK_SWITCH (gobject), TRUE); g_signal_handlers_unblock_by_data (gobject, user_data); } else browser_data->enabled_disabled_cardinality_changed = TRUE; } }
static void set_spin_value (GthFileToolResize *self, GtkWidget *spin, int x) { g_signal_handlers_block_by_data (G_OBJECT (spin), self); gtk_spin_button_set_value (GTK_SPIN_BUTTON (spin), x); g_signal_handlers_unblock_by_data (G_OBJECT (spin), self); }
/** * uni_image_view_scroll_to: * @offset_x: X part of the offset in zoom space coordinates. * @offset_y: Y part of the offset in zoom space coordinates. * @set_adjustments: whether to update the adjustments. Because this * function is called from the adjustments callbacks, it needs to be * %FALSE to prevent infinite recursion. * @invalidate: whether to invalidate the view or redraw immedately, * see uni_image_view_set_offset() * * Set the offset of where in the image the #UniImageView should begin * to display image data. **/ static void uni_image_view_scroll_to (UniImageView * view, gdouble offset_x, gdouble offset_y, gboolean set_adjustments, gboolean invalidate) { int delta_x, delta_y; uni_image_view_clamp_offset (view, &offset_x, &offset_y); /* Round avoids floating point to integer conversion errors. See */ delta_x = floor (offset_x - view->offset_x + 0.5); delta_y = floor (offset_y - view->offset_y + 0.5); /* Exit early if the scroll was smaller than one (zoom space) pixel. */ if (delta_x == 0 && delta_y == 0) return; view->offset_x = offset_x; view->offset_y = offset_y; if (GTK_WIDGET (view)->window) { if (invalidate) gdk_window_invalidate_rect (GTK_WIDGET (view)->window, NULL, TRUE); else uni_image_view_fast_scroll (view, delta_x, delta_y); } if (!set_adjustments) return; g_signal_handlers_block_by_data (G_OBJECT (view->hadj), view); g_signal_handlers_block_by_data (G_OBJECT (view->vadj), view); gtk_adjustment_set_value (view->hadj, view->offset_x); gtk_adjustment_set_value (view->vadj, view->offset_y); g_signal_handlers_unblock_by_data (G_OBJECT (view->hadj), view); g_signal_handlers_unblock_by_data (G_OBJECT (view->vadj), view); }
static void selection_height_value_changed_cb (GtkSpinButton *spin, GthFileToolResize *self) { if (self->priv->unit == GTH_UNIT_PIXELS) self->priv->new_height = MAX (gtk_spin_button_get_value_as_int (spin), 1); else if (self->priv->unit == GTH_UNIT_PERCENTAGE) self->priv->new_height = MAX ((int) round ((gtk_spin_button_get_value (spin) / 100.0) * self->priv->original_height), 1); if (self->priv->fixed_aspect_ratio) { g_signal_handlers_block_by_data (GET_WIDGET ("resize_width_spinbutton"), self); self->priv->new_width = MAX ((int) round ((double) self->priv->new_height * self->priv->aspect_ratio), 1); if (self->priv->unit == GTH_UNIT_PIXELS) gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("resize_width_spinbutton")), self->priv->new_width); else if (self->priv->unit == GTH_UNIT_PERCENTAGE) gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("resize_width_spinbutton")), ((double) self->priv->new_width) / self->priv->original_width * 100.0); g_signal_handlers_unblock_by_data (GET_WIDGET ("resize_width_spinbutton"), self); } update_image_size (self); }
static void set_image_size (GthFileToolResize *self, int w, int h, int ratio) { self->priv->fixed_aspect_ratio = TRUE; self->priv->aspect_ratio = (double) w / h;; self->priv->new_width = w; self->priv->new_height = h; self->priv->unit = GTH_UNIT_PIXELS; update_size_spin_buttons_from_unit_value (self); g_signal_handlers_block_by_data (GET_WIDGET ("resize_width_spinbutton"), self); g_signal_handlers_block_by_data (GET_WIDGET ("resize_height_spinbutton"), self); g_signal_handlers_block_by_data (GET_WIDGET ("unit_combobox"), self); g_signal_handlers_block_by_data (self->priv->ratio_combobox, self); g_signal_handlers_block_by_data (GET_WIDGET ("invert_ratio_checkbutton"), self); g_signal_handlers_block_by_data (GET_WIDGET ("ratio_w_spinbutton"), self); g_signal_handlers_block_by_data (GET_WIDGET ("ratio_h_spinbutton"), self); gtk_combo_box_set_active (GTK_COMBO_BOX (GET_WIDGET ("unit_combobox")), PIXELS_UNIT_POSITION); gtk_combo_box_set_active (GTK_COMBO_BOX (self->priv->ratio_combobox), ratio); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("invert_ratio_checkbutton")), FALSE); gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("resize_width_spinbutton")), w); gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("resize_height_spinbutton")), h); gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("ratio_w_spinbutton")), w); gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("ratio_h_spinbutton")), h); g_signal_handlers_unblock_by_data (GET_WIDGET ("resize_width_spinbutton"), self); g_signal_handlers_unblock_by_data (GET_WIDGET ("resize_height_spinbutton"), self); g_signal_handlers_unblock_by_data (GET_WIDGET ("unit_combobox"), self); g_signal_handlers_unblock_by_data (self->priv->ratio_combobox, self); g_signal_handlers_unblock_by_data (GET_WIDGET ("invert_ratio_checkbutton"), self); g_signal_handlers_unblock_by_data (GET_WIDGET ("ratio_w_spinbutton"), self); g_signal_handlers_unblock_by_data (GET_WIDGET ("ratio_h_spinbutton"), self); update_image_size (self); }