GimpContainer * gimp_displays_get_dirty_images (Gimp *gimp) { g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL); if (gimp_displays_dirty (gimp)) { GimpContainer *container = gimp_list_new_weak (GIMP_TYPE_IMAGE, FALSE); GList *list; GQuark handler; handler = gimp_container_add_handler (gimp->images, "clean", G_CALLBACK (gimp_displays_image_dirty_callback), container); g_object_set_data (G_OBJECT (container), "clean-handler", GINT_TO_POINTER (handler)); handler = gimp_container_add_handler (gimp->images, "dirty", G_CALLBACK (gimp_displays_image_dirty_callback), container); g_object_set_data (G_OBJECT (container), "dirty-handler", GINT_TO_POINTER (handler)); g_signal_connect_object (container, "disconnect", G_CALLBACK (gimp_displays_dirty_images_disconnect), G_OBJECT (gimp->images), 0); gimp_container_add_handler (container, "clean", G_CALLBACK (gimp_displays_image_clean_callback), container); gimp_container_add_handler (container, "dirty", G_CALLBACK (gimp_displays_image_clean_callback), container); for (list = GIMP_LIST (gimp->images)->list; list; list = g_list_next (list)) { GimpImage *image = list->data; if (image->dirty && image->disp_count > 0) gimp_container_add (container, GIMP_OBJECT (image)); } return container; } return NULL; }
void gimp_controllers_init (Gimp *gimp) { GimpControllerManager *manager; g_return_if_fail (GIMP_IS_GIMP (gimp)); g_return_if_fail (gimp_controller_manager_get (gimp) == NULL); manager = g_slice_new0 (GimpControllerManager); g_object_set_data_full (G_OBJECT (gimp), GIMP_CONTROLLER_MANAGER_DATA_KEY, manager, (GDestroyNotify) gimp_controller_manager_free); manager->controllers = gimp_list_new (GIMP_TYPE_CONTROLLER_INFO, TRUE); g_signal_connect (manager->controllers, "add", G_CALLBACK (gimp_controllers_add), manager); g_signal_connect (manager->controllers, "remove", G_CALLBACK (gimp_controllers_remove), manager); manager->event_mapped_id = gimp_container_add_handler (manager->controllers, "event-mapped", G_CALLBACK (gimp_controllers_event_mapped), manager); g_type_class_ref (GIMP_TYPE_CONTROLLER_WHEEL); g_type_class_ref (GIMP_TYPE_CONTROLLER_KEYBOARD); }
void tool_manager_init (Gimp *gimp) { GimpToolManager *tool_manager; GimpContext *user_context; g_return_if_fail (GIMP_IS_GIMP (gimp)); g_return_if_fail (tool_manager_quark == 0); tool_manager_quark = g_quark_from_static_string ("gimp-tool-manager"); tool_manager = g_slice_new0 (GimpToolManager); g_object_set_qdata (G_OBJECT (gimp), tool_manager_quark, tool_manager); tool_manager->image_clean_handler_id = gimp_container_add_handler (gimp->images, "clean", G_CALLBACK (tool_manager_image_clean_dirty), tool_manager); tool_manager->image_dirty_handler_id = gimp_container_add_handler (gimp->images, "dirty", G_CALLBACK (tool_manager_image_clean_dirty), tool_manager); tool_manager->image_saving_handler_id = gimp_container_add_handler (gimp->images, "saving", G_CALLBACK (tool_manager_image_saving), tool_manager); user_context = gimp_get_user_context (gimp); g_signal_connect (user_context, "tool-changed", G_CALLBACK (tool_manager_tool_changed), tool_manager); g_signal_connect (user_context, "tool-preset-changed", G_CALLBACK (tool_manager_preset_changed), tool_manager); tool_manager_tool_changed (user_context, gimp_context_get_tool (user_context), tool_manager); }
void tool_manager_init (Gimp *gimp) { GimpToolManager *tool_manager; GimpContext *user_context; g_return_if_fail (GIMP_IS_GIMP (gimp)); tool_manager = g_slice_new0 (GimpToolManager); tool_manager->active_tool = NULL; tool_manager->tool_stack = NULL; tool_manager->image_clean_handler_id = 0; tool_manager->image_dirty_handler_id = 0; tool_manager_set (gimp, tool_manager); tool_manager->image_clean_handler_id = gimp_container_add_handler (gimp->images, "clean", G_CALLBACK (tool_manager_image_clean_dirty), tool_manager); tool_manager->image_dirty_handler_id = gimp_container_add_handler (gimp->images, "dirty", G_CALLBACK (tool_manager_image_clean_dirty), tool_manager); user_context = gimp_get_user_context (gimp); tool_manager->shared_paint_options = g_object_new (GIMP_TYPE_PAINT_OPTIONS, "gimp", gimp, "name", "tmp", NULL); g_signal_connect (user_context, "tool-changed", G_CALLBACK (tool_manager_tool_changed), tool_manager); g_signal_connect (user_context, "tool-preset-changed", G_CALLBACK (tool_manager_preset_changed), tool_manager); }
static void gimp_filter_stack_constructed (GObject *object) { GimpContainer *container = GIMP_CONTAINER (object); G_OBJECT_CLASS (parent_class)->constructed (object); g_assert (g_type_is_a (gimp_container_get_children_type (container), GIMP_TYPE_FILTER)); gimp_container_add_handler (container, "visibility-changed", G_CALLBACK (gimp_filter_stack_filter_visible), container); }
void tool_manager_init (Gimp *gimp) { GimpToolManager *tool_manager; GimpContext *user_context; g_return_if_fail (GIMP_IS_GIMP (gimp)); tool_manager = g_slice_new0 (GimpToolManager); tool_manager->active_tool = NULL; tool_manager->tool_stack = NULL; tool_manager->image_clean_handler_id = 0; tool_manager->image_dirty_handler_id = 0; tool_manager_set (gimp, tool_manager); tool_manager->image_clean_handler_id = gimp_container_add_handler (gimp->images, "clean", G_CALLBACK (tool_manager_image_clean_dirty), tool_manager); tool_manager->image_dirty_handler_id = gimp_container_add_handler (gimp->images, "dirty", G_CALLBACK (tool_manager_image_clean_dirty), tool_manager); user_context = gimp_get_user_context (gimp); g_signal_connect (user_context, "tool-changed", G_CALLBACK (tool_manager_tool_changed), tool_manager); g_signal_connect (user_context, "tool-preset-changed", G_CALLBACK (tool_manager_preset_changed), tool_manager); }
GtkWidget * gimp_tool_view_new (GimpViewType view_type, GimpContainer *container, GimpContext *context, gint view_size, gint view_border_width, GimpMenuFactory *menu_factory) { GimpToolView *tool_view; GimpContainerEditor *editor; tool_view = g_object_new (GIMP_TYPE_TOOL_VIEW, NULL); if (! gimp_container_editor_construct (GIMP_CONTAINER_EDITOR (tool_view), view_type, container, context, view_size, view_border_width, menu_factory, "<Tools>", "/tools-popup")) { g_object_unref (tool_view); return NULL; } editor = GIMP_CONTAINER_EDITOR (tool_view); tool_view->raise_button = gimp_editor_add_action_button (GIMP_EDITOR (editor->view), "tools", "tools-raise", "tools-raise-to-top", GDK_SHIFT_MASK, NULL); tool_view->lower_button = gimp_editor_add_action_button (GIMP_EDITOR (editor->view), "tools", "tools-lower", "tools-lower-to-bottom", GDK_SHIFT_MASK, NULL); tool_view->reset_button = gimp_editor_add_action_button (GIMP_EDITOR (editor->view), "tools", "tools-reset", NULL); if (view_type == GIMP_VIEW_TYPE_LIST) { GimpContainerTreeView *tree_view = GIMP_CONTAINER_TREE_VIEW (editor->view); GtkWidget *tree_widget = GTK_WIDGET (tree_view); GtkTreeViewColumn *column; GtkCellRenderer *eye_cell; GtkIconSize icon_size; column = gtk_tree_view_column_new (); gtk_tree_view_insert_column (tree_view->view, column, 0); eye_cell = gimp_cell_renderer_toggle_new (GIMP_STOCK_VISIBLE); icon_size = gimp_get_icon_size (GTK_WIDGET (tree_view), GIMP_STOCK_VISIBLE, GTK_ICON_SIZE_BUTTON, view_size - 2 * tree_widget->style->xthickness, view_size - 2 * tree_widget->style->ythickness); g_object_set (eye_cell, "stock-size", icon_size, NULL); gtk_tree_view_column_pack_start (column, eye_cell, FALSE); gtk_tree_view_column_set_cell_data_func (column, eye_cell, gimp_tool_view_eye_data_func, tree_view, NULL); tree_view->toggle_cells = g_list_prepend (tree_view->toggle_cells, eye_cell); g_signal_connect (eye_cell, "clicked", G_CALLBACK (gimp_tool_view_eye_clicked), tree_view); tool_view->visible_handler_id = gimp_container_add_handler (container, "notify::visible", G_CALLBACK (gimp_tool_view_visible_notify), tree_view); } gimp_ui_manager_update (GIMP_EDITOR (editor->view)->ui_manager, editor); return GTK_WIDGET (tool_view); }
void gimp_display_shell_connect (GimpDisplayShell *shell) { GimpImage *image; GimpDisplayConfig *display_config; g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell)); g_return_if_fail (GIMP_IS_DISPLAY (shell->display)); g_return_if_fail (GIMP_IS_IMAGE (shell->display->image)); image = shell->display->image; display_config = GIMP_DISPLAY_CONFIG (image->gimp->config); g_signal_connect (image, "clean", G_CALLBACK (gimp_display_shell_clean_dirty_handler), shell); g_signal_connect (image, "dirty", G_CALLBACK (gimp_display_shell_clean_dirty_handler), shell); g_signal_connect (image, "undo-event", G_CALLBACK (gimp_display_shell_undo_event_handler), shell); g_signal_connect (image->grid, "notify", G_CALLBACK (gimp_display_shell_grid_notify_handler), shell); g_signal_connect (image, "name-changed", G_CALLBACK (gimp_display_shell_name_changed_handler), shell); g_signal_connect (image, "selection-control", G_CALLBACK (gimp_display_shell_selection_control_handler), shell); g_signal_connect (image, "size-changed", G_CALLBACK (gimp_display_shell_size_changed_handler), shell); g_signal_connect (image, "resolution-changed", G_CALLBACK (gimp_display_shell_resolution_changed_handler), shell); g_signal_connect (image, "quick-mask-changed", G_CALLBACK (gimp_display_shell_quick_mask_changed_handler), shell); g_signal_connect (image, "update-guide", G_CALLBACK (gimp_display_shell_update_guide_handler), shell); g_signal_connect (image, "update-sample-point", G_CALLBACK (gimp_display_shell_update_sample_point_handler), shell); g_signal_connect (image, "invalidate-preview", G_CALLBACK (gimp_display_shell_invalidate_preview_handler), shell); g_signal_connect (image, "profile-changed", G_CALLBACK (gimp_display_shell_profile_changed_handler), shell); shell->vectors_freeze_handler = gimp_container_add_handler (image->vectors, "freeze", G_CALLBACK (gimp_display_shell_vectors_freeze_handler), shell); shell->vectors_thaw_handler = gimp_container_add_handler (image->vectors, "thaw", G_CALLBACK (gimp_display_shell_vectors_thaw_handler), shell); shell->vectors_visible_handler = gimp_container_add_handler (image->vectors, "visibility-changed", G_CALLBACK (gimp_display_shell_vectors_visible_handler), shell); g_signal_connect (image->vectors, "add", G_CALLBACK (gimp_display_shell_vectors_add_handler), shell); g_signal_connect (image->vectors, "remove", G_CALLBACK (gimp_display_shell_vectors_remove_handler), shell); g_signal_connect (image->gimp->config, "notify::transparency-size", G_CALLBACK (gimp_display_shell_check_notify_handler), shell); g_signal_connect (image->gimp->config, "notify::transparency-type", G_CALLBACK (gimp_display_shell_check_notify_handler), shell); g_signal_connect (image->gimp->config, "notify::image-title-format", G_CALLBACK (gimp_display_shell_title_notify_handler), shell); g_signal_connect (image->gimp->config, "notify::image-status-format", G_CALLBACK (gimp_display_shell_title_notify_handler), shell); g_signal_connect (image->gimp->config, "notify::navigation-preview-size", G_CALLBACK (gimp_display_shell_nav_size_notify_handler), shell); g_signal_connect (image->gimp->config, "notify::monitor-resolution-from-windowing-system", G_CALLBACK (gimp_display_shell_monitor_res_notify_handler), shell); g_signal_connect (image->gimp->config, "notify::monitor-xresolution", G_CALLBACK (gimp_display_shell_monitor_res_notify_handler), shell); g_signal_connect (image->gimp->config, "notify::monitor-yresolution", G_CALLBACK (gimp_display_shell_monitor_res_notify_handler), shell); g_signal_connect (display_config->default_view, "notify::padding-mode", G_CALLBACK (gimp_display_shell_padding_notify_handler), shell); g_signal_connect (display_config->default_view, "notify::padding-color", G_CALLBACK (gimp_display_shell_padding_notify_handler), shell); g_signal_connect (display_config->default_fullscreen_view, "notify::padding-mode", G_CALLBACK (gimp_display_shell_padding_notify_handler), shell); g_signal_connect (display_config->default_fullscreen_view, "notify::padding-color", G_CALLBACK (gimp_display_shell_padding_notify_handler), shell); g_signal_connect (image->gimp->config, "notify::marching-ants-speed", G_CALLBACK (gimp_display_shell_ants_speed_notify_handler), shell); g_signal_connect (image->gimp->config, "notify::zoom-quality", G_CALLBACK (gimp_display_shell_quality_notify_handler), shell); gimp_display_shell_invalidate_preview_handler (image, shell); gimp_display_shell_quick_mask_changed_handler (image, shell); }