static void gimp_display_shell_sample_point_add_handler (GimpImage *image, GimpSamplePoint *sample_point, GimpDisplayShell *shell) { GimpCanvasProxyGroup *group = GIMP_CANVAS_PROXY_GROUP (shell->sample_points); GimpCanvasItem *item; GList *list; gint x; gint y; gint i; gimp_sample_point_get_position (sample_point, &x, &y); item = gimp_canvas_sample_point_new (shell, x, y, 0, TRUE); gimp_canvas_proxy_group_add_item (group, sample_point, item); g_object_unref (item); for (list = gimp_image_get_sample_points (image), i = 1; list; list = g_list_next (list), i++) { GimpSamplePoint *sample_point = list->data; item = gimp_canvas_proxy_group_get_item (group, sample_point); if (item) g_object_set (item, "index", i, NULL); } }
static void gimp_display_shell_sample_point_remove_handler (GimpImage *image, GimpSamplePoint *sample_point, GimpDisplayShell *shell) { GimpCanvasProxyGroup *group = GIMP_CANVAS_PROXY_GROUP (shell->sample_points); GList *list; gint i; gimp_canvas_proxy_group_remove_item (group, sample_point); for (list = gimp_image_get_sample_points (image), i = 1; list; list = g_list_next (list), i++) { GimpSamplePoint *sample_point = list->data; GimpCanvasItem *item; item = gimp_canvas_proxy_group_get_item (group, sample_point); if (item) g_object_set (item, "index", i, NULL); } }
static void gimp_display_shell_vectors_remove_handler (GimpContainer *container, GimpVectors *vectors, GimpDisplayShell *shell) { GimpCanvasProxyGroup *group = GIMP_CANVAS_PROXY_GROUP (shell->vectors); gimp_canvas_proxy_group_remove_item (group, vectors); }
static void gimp_display_shell_guide_remove_handler (GimpImage *image, GimpGuide *guide, GimpDisplayShell *shell) { GimpCanvasProxyGroup *group = GIMP_CANVAS_PROXY_GROUP (shell->guides); gimp_canvas_proxy_group_remove_item (group, guide); }
static void gimp_display_shell_vectors_thaw_handler (GimpVectors *vectors, GimpDisplayShell *shell) { GimpCanvasProxyGroup *group = GIMP_CANVAS_PROXY_GROUP (shell->vectors); GimpCanvasItem *item; item = gimp_canvas_proxy_group_get_item (group, vectors); gimp_canvas_path_set (item, gimp_vectors_get_bezier (vectors)); }
static void gimp_display_shell_vectors_visible_handler (GimpVectors *vectors, GimpDisplayShell *shell) { GimpCanvasProxyGroup *group = GIMP_CANVAS_PROXY_GROUP (shell->vectors); GimpCanvasItem *item; item = gimp_canvas_proxy_group_get_item (group, vectors); gimp_canvas_item_set_visible (item, gimp_item_get_visible (GIMP_ITEM (vectors))); }
static void gimp_display_shell_sample_point_move_handler (GimpImage *image, GimpSamplePoint *sample_point, GimpDisplayShell *shell) { GimpCanvasProxyGroup *group = GIMP_CANVAS_PROXY_GROUP (shell->sample_points); GimpCanvasItem *item; item = gimp_canvas_proxy_group_get_item (group, sample_point); gimp_canvas_sample_point_set (item, sample_point->x, sample_point->y); }
static void gimp_display_shell_guide_move_handler (GimpImage *image, GimpGuide *guide, GimpDisplayShell *shell) { GimpCanvasProxyGroup *group = GIMP_CANVAS_PROXY_GROUP (shell->guides); GimpCanvasItem *item; item = gimp_canvas_proxy_group_get_item (group, guide); gimp_canvas_guide_set (item, gimp_guide_get_orientation (guide), gimp_guide_get_position (guide)); }
static void gimp_display_shell_guide_add_handler (GimpImage *image, GimpGuide *guide, GimpDisplayShell *shell) { GimpCanvasProxyGroup *group = GIMP_CANVAS_PROXY_GROUP (shell->guides); GimpCanvasItem *item; item = gimp_canvas_guide_new (shell, gimp_guide_get_orientation (guide), gimp_guide_get_position (guide), TRUE); gimp_canvas_proxy_group_add_item (group, guide, item); g_object_unref (item); }
static void gimp_display_shell_vectors_add_handler (GimpContainer *container, GimpVectors *vectors, GimpDisplayShell *shell) { GimpCanvasProxyGroup *group = GIMP_CANVAS_PROXY_GROUP (shell->vectors); GimpCanvasItem *item; item = gimp_canvas_path_new (shell, gimp_vectors_get_bezier (vectors), 0, 0, FALSE, GIMP_PATH_STYLE_VECTORS); gimp_canvas_item_set_visible (item, gimp_item_get_visible (GIMP_ITEM (vectors))); gimp_canvas_proxy_group_add_item (group, vectors, item); g_object_unref (item); }
static void gimp_display_shell_active_vectors_handler (GimpImage *image, GimpDisplayShell *shell) { GimpCanvasProxyGroup *group = GIMP_CANVAS_PROXY_GROUP (shell->vectors); GimpVectors *active = gimp_image_get_active_vectors (image); GList *list; for (list = gimp_image_get_vectors_iter (image); list; list = g_list_next (list)) { GimpVectors *vectors = list->data; GimpCanvasItem *item; item = gimp_canvas_proxy_group_get_item (group, vectors); gimp_canvas_item_set_highlight (item, vectors == active); } }
void gimp_display_shell_disconnect (GimpDisplayShell *shell) { GimpImage *image; GimpContainer *vectors; GList *list; g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell)); g_return_if_fail (GIMP_IS_DISPLAY (shell->display)); image = gimp_display_get_image (shell->display); g_return_if_fail (GIMP_IS_IMAGE (image)); vectors = gimp_image_get_vectors (image); gimp_display_shell_icon_update_stop (shell); gimp_canvas_layer_boundary_set_layer (GIMP_CANVAS_LAYER_BOUNDARY (shell->layer_boundary), NULL); g_signal_handlers_disconnect_by_func (shell->display->config, gimp_display_shell_quality_notify_handler, shell); g_signal_handlers_disconnect_by_func (shell->display->config, gimp_display_shell_ants_speed_notify_handler, shell); g_signal_handlers_disconnect_by_func (shell->display->config->default_fullscreen_view, gimp_display_shell_padding_notify_handler, shell); g_signal_handlers_disconnect_by_func (shell->display->config->default_view, gimp_display_shell_padding_notify_handler, shell); g_signal_handlers_disconnect_by_func (shell->display->config, gimp_display_shell_monitor_res_notify_handler, shell); g_signal_handlers_disconnect_by_func (shell->display->config, gimp_display_shell_nav_size_notify_handler, shell); g_signal_handlers_disconnect_by_func (shell->display->config, gimp_display_shell_title_notify_handler, shell); g_signal_handlers_disconnect_by_func (shell->display->config, gimp_display_shell_check_notify_handler, shell); g_signal_handlers_disconnect_by_func (vectors, gimp_display_shell_vectors_remove_handler, shell); g_signal_handlers_disconnect_by_func (vectors, gimp_display_shell_vectors_add_handler, shell); gimp_tree_handler_disconnect (shell->vectors_visible_handler); shell->vectors_visible_handler = NULL; gimp_tree_handler_disconnect (shell->vectors_thaw_handler); shell->vectors_thaw_handler = NULL; gimp_tree_handler_disconnect (shell->vectors_freeze_handler); shell->vectors_freeze_handler = NULL; g_signal_handlers_disconnect_by_func (image, gimp_display_shell_active_vectors_handler, shell); for (list = gimp_item_stack_get_item_iter (GIMP_ITEM_STACK (vectors)); list; list = g_list_next (list)) { gimp_canvas_proxy_group_remove_item (GIMP_CANVAS_PROXY_GROUP (shell->vectors), list->data); } g_signal_handlers_disconnect_by_func (image, gimp_display_shell_exported_handler, shell); g_signal_handlers_disconnect_by_func (image, gimp_display_shell_saved_handler, shell); g_signal_handlers_disconnect_by_func (image, gimp_display_shell_profile_changed_handler, shell); g_signal_handlers_disconnect_by_func (image, gimp_display_shell_precision_changed_handler, shell); g_signal_handlers_disconnect_by_func (image, gimp_display_shell_invalidate_preview_handler, shell); g_signal_handlers_disconnect_by_func (image, gimp_display_shell_guide_add_handler, shell); g_signal_handlers_disconnect_by_func (image, gimp_display_shell_guide_remove_handler, shell); g_signal_handlers_disconnect_by_func (image, gimp_display_shell_guide_move_handler, shell); for (list = gimp_image_get_guides (image); list; list = g_list_next (list)) { gimp_canvas_proxy_group_remove_item (GIMP_CANVAS_PROXY_GROUP (shell->guides), list->data); } g_signal_handlers_disconnect_by_func (image, gimp_display_shell_sample_point_add_handler, shell); g_signal_handlers_disconnect_by_func (image, gimp_display_shell_sample_point_remove_handler, shell); g_signal_handlers_disconnect_by_func (image, gimp_display_shell_sample_point_move_handler, shell); for (list = gimp_image_get_sample_points (image); list; list = g_list_next (list)) { gimp_canvas_proxy_group_remove_item (GIMP_CANVAS_PROXY_GROUP (shell->sample_points), list->data); } g_signal_handlers_disconnect_by_func (image, gimp_display_shell_quick_mask_changed_handler, shell); g_signal_handlers_disconnect_by_func (image, gimp_display_shell_resolution_changed_handler, shell); g_signal_handlers_disconnect_by_func (image, gimp_display_shell_size_changed_detailed_handler, shell); g_signal_handlers_disconnect_by_func (image, gimp_display_shell_selection_invalidate_handler, shell); g_signal_handlers_disconnect_by_func (image, gimp_display_shell_name_changed_handler, shell); g_signal_handlers_disconnect_by_func (gimp_image_get_grid (image), gimp_display_shell_grid_notify_handler, shell); g_signal_handlers_disconnect_by_func (image, gimp_display_shell_undo_event_handler, shell); g_signal_handlers_disconnect_by_func (image, gimp_display_shell_clean_dirty_handler, shell); }