static void mate_color_selection_dialog_init (MateColorSelectionDialog *colorseldiag) { GtkDialog *dialog = GTK_DIALOG (colorseldiag); _mate_desktop_init_i18n (); gtk_container_set_border_width (GTK_CONTAINER (dialog), 5); gtk_box_set_spacing (GTK_BOX (gtk_dialog_get_content_area (dialog)), 2); /* 2 * 5 + 2 = 12 */ gtk_container_set_border_width (GTK_CONTAINER (gtk_dialog_get_action_area (dialog)), 5); gtk_box_set_spacing (GTK_BOX (gtk_dialog_get_action_area (dialog)), 6); colorseldiag->colorsel = mate_color_selection_new (); gtk_container_set_border_width (GTK_CONTAINER (colorseldiag->colorsel), 5); mate_color_selection_set_has_palette (MATE_COLOR_SELECTION(colorseldiag->colorsel), FALSE); mate_color_selection_set_has_opacity_control (MATE_COLOR_SELECTION(colorseldiag->colorsel), FALSE); gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (colorseldiag))), colorseldiag->colorsel); gtk_widget_show (colorseldiag->colorsel); colorseldiag->cancel_button = gtk_dialog_add_button (GTK_DIALOG (colorseldiag), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL); colorseldiag->ok_button = gtk_dialog_add_button (GTK_DIALOG (colorseldiag), GTK_STOCK_OK, GTK_RESPONSE_OK); gtk_widget_grab_default (colorseldiag->ok_button); colorseldiag->help_button = gtk_dialog_add_button (GTK_DIALOG (colorseldiag), GTK_STOCK_HELP, GTK_RESPONSE_HELP); gtk_widget_hide (colorseldiag->help_button); gtk_dialog_set_alternative_button_order (GTK_DIALOG (colorseldiag), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL, GTK_RESPONSE_HELP, -1); gtk_window_set_title (GTK_WINDOW (colorseldiag), _("Color Selection")); //_gtk_dialog_set_ignore_separator (dialog, TRUE); }
/** * mate_desktop_prepend_terminal_to_vector: * @argc: a pointer to the vector size * @argv: a pointer to the vector * * Prepends a terminal (either the one configured as default in the user's * MATE setup, or one of the common xterm emulators) to the passed in vector, * modifying it in the process. The vector should be allocated with #g_malloc, * as this will #g_free the original vector. Also all elements must have been * allocated separately. That is the standard glib/MATE way of doing vectors * however. If the integer that @argc points to is negative, the size will * first be computed. Also note that passing in pointers to a vector that is * empty, will just create a new vector for you. **/ void mate_desktop_prepend_terminal_to_vector (int *argc, char ***argv) { #ifndef G_OS_WIN32 char **real_argv; int real_argc; int i, j; char **term_argv = NULL; int term_argc = 0; GSettings *settings; gchar *terminal = NULL; char **the_argv; g_return_if_fail (argc != NULL); g_return_if_fail (argv != NULL); _mate_desktop_init_i18n (); /* sanity */ if(*argv == NULL) *argc = 0; the_argv = *argv; /* compute size if not given */ if (*argc < 0) { for (i = 0; the_argv[i] != NULL; i++) ; *argc = i; } settings = g_settings_new ("org.mate.applications-terminal"); terminal = g_settings_get_string (settings, "exec"); if (terminal) { gchar *command_line; gchar *exec_flag; exec_flag = g_settings_get_string (settings, "exec-arg"); if (exec_flag == NULL) command_line = g_strdup (terminal); else command_line = g_strdup_printf ("%s %s", terminal, exec_flag); g_shell_parse_argv (command_line, &term_argc, &term_argv, NULL /* error */); g_free (command_line); g_free (exec_flag); g_free (terminal); } g_object_unref (settings); if (term_argv == NULL) { char *check; term_argc = 2; term_argv = g_new0 (char *, 3); check = g_find_program_in_path ("mate-terminal"); if (check != NULL) { term_argv[0] = check; /* Note that mate-terminal takes -x and * as -e in mate-terminal is broken we use that. */ term_argv[1] = g_strdup ("-x"); } else { if (check == NULL) check = g_find_program_in_path ("nxterm"); if (check == NULL) check = g_find_program_in_path ("color-xterm"); if (check == NULL) check = g_find_program_in_path ("rxvt"); if (check == NULL) check = g_find_program_in_path ("xterm"); if (check == NULL) check = g_find_program_in_path ("dtterm"); if (check == NULL) { g_warning (_("Cannot find a terminal, using " "xterm, even if it may not work")); check = g_strdup ("xterm"); } term_argv[0] = check; term_argv[1] = g_strdup ("-e"); } }
/* Returns NULL if screen could not be created. For instance, if * the driver does not support Xrandr 1.2. */ MateRRScreen * mate_rr_screen_new (GdkScreen *gdk_screen, MateRRScreenChanged callback, gpointer data, GError **error) { #ifdef HAVE_RANDR Display *dpy = GDK_SCREEN_XDISPLAY (gdk_screen); int event_base; int ignore; #endif g_return_val_if_fail (error == NULL || *error == NULL, NULL); _mate_desktop_init_i18n (); #ifdef HAVE_RANDR if (XRRQueryExtension (dpy, &event_base, &ignore)) { MateRRScreen *screen = g_new0 (MateRRScreen, 1); screen->gdk_screen = gdk_screen; screen->gdk_root = gdk_screen_get_root_window (gdk_screen); screen->xroot = gdk_x11_drawable_get_xid (screen->gdk_root); screen->xdisplay = dpy; screen->xscreen = gdk_x11_screen_get_xscreen (screen->gdk_screen); screen->connector_type_atom = XInternAtom (dpy, "ConnectorType", FALSE); screen->callback = callback; screen->data = data; screen->randr_event_base = event_base; XRRQueryVersion (dpy, &screen->rr_major_version, &screen->rr_minor_version); if (screen->rr_major_version > 1 || (screen->rr_major_version == 1 && screen->rr_minor_version < 2)) { g_set_error (error, MATE_RR_ERROR, MATE_RR_ERROR_NO_RANDR_EXTENSION, "RANDR extension is too old (must be at least 1.2)"); g_free (screen); return NULL; } screen->info = screen_info_new (screen, TRUE, error); if (!screen->info) { g_free (screen); return NULL; } if (screen->callback) { XRRSelectInput (screen->xdisplay, screen->xroot, RRScreenChangeNotifyMask); gdk_x11_register_standard_event_type (gdk_screen_get_display (gdk_screen), event_base, RRNotify + 1); gdk_window_add_filter (screen->gdk_root, screen_on_event, screen); } return screen; } else { #endif /* HAVE_RANDR */ g_set_error (error, MATE_RR_ERROR, MATE_RR_ERROR_NO_RANDR_EXTENSION, _("RANDR extension is not present")); return NULL; #ifdef HAVE_RANDR } #endif }
static void mate_color_button_init (MateColorButton *color_button) { GtkWidget *alignment; GtkWidget *frame; PangoLayout *layout; PangoRectangle rect; _mate_desktop_init_i18n (); /* Create the widgets */ color_button->priv = MATE_COLOR_BUTTON_GET_PRIVATE (color_button); alignment = gtk_alignment_new (0.5, 0.5, 0.5, 1.0); gtk_container_set_border_width (GTK_CONTAINER (alignment), 1); gtk_container_add (GTK_CONTAINER (color_button), alignment); gtk_widget_show (alignment); frame = gtk_frame_new (NULL); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_OUT); gtk_container_add (GTK_CONTAINER (alignment), frame); gtk_widget_show (frame); /* Just some widget we can hook to expose-event on */ color_button->priv->draw_area = gtk_alignment_new (0.5, 0.5, 0.0, 0.0); layout = gtk_widget_create_pango_layout (GTK_WIDGET (color_button), "Black"); pango_layout_get_pixel_extents (layout, NULL, &rect); g_object_unref (layout); gtk_widget_set_size_request (color_button->priv->draw_area, rect.width - 2, rect.height - 2); g_signal_connect (color_button->priv->draw_area, "draw", G_CALLBACK (draw), color_button); gtk_container_add (GTK_CONTAINER (frame), color_button->priv->draw_area); gtk_widget_show (color_button->priv->draw_area); color_button->priv->title = g_strdup (_("Pick a Color")); /* default title */ /* Start with opaque black, alpha disabled */ color_button->priv->color.red = 0; color_button->priv->color.green = 0; color_button->priv->color.blue = 0; color_button->priv->alpha = 65535; color_button->priv->use_alpha = FALSE; gtk_drag_dest_set (GTK_WIDGET (color_button), GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_HIGHLIGHT | GTK_DEST_DEFAULT_DROP, drop_types, 1, GDK_ACTION_COPY); gtk_drag_source_set (GTK_WIDGET(color_button), GDK_BUTTON1_MASK|GDK_BUTTON3_MASK, drop_types, 1, GDK_ACTION_COPY); g_signal_connect (color_button, "drag-begin", G_CALLBACK (mate_color_button_drag_begin), color_button); g_signal_connect (color_button, "drag-data-received", G_CALLBACK (mate_color_button_drag_data_received), color_button); g_signal_connect (color_button, "drag-data-get", G_CALLBACK (mate_color_button_drag_data_get), color_button); }
static void mate_color_selection_dialog_init (MateColorSelectionDialog *colorseldiag) { GtkDialog *dialog = GTK_DIALOG (colorseldiag); #if GTK_CHECK_VERSION (3, 12, 0) gint use_header_bar; g_object_get (gtk_widget_get_settings (GTK_WIDGET (dialog)), "gtk-dialogs-use-header", &use_header_bar, NULL); g_object_set (colorseldiag, "use-header-bar", use_header_bar, NULL); #endif _mate_desktop_init_i18n (); gtk_container_set_border_width (GTK_CONTAINER (dialog), 5); gtk_box_set_spacing (GTK_BOX (gtk_dialog_get_content_area (dialog)), 2); /* 2 * 5 + 2 = 12 */ #if !GTK_CHECK_VERSION (3, 12, 0) gtk_container_set_border_width (GTK_CONTAINER (gtk_dialog_get_action_area (dialog)), 5); gtk_box_set_spacing (GTK_BOX (gtk_dialog_get_action_area (dialog)), 6); #endif colorseldiag->colorsel = mate_color_selection_new (); gtk_container_set_border_width (GTK_CONTAINER (colorseldiag->colorsel), 5); mate_color_selection_set_has_palette (MATE_COLOR_SELECTION(colorseldiag->colorsel), FALSE); mate_color_selection_set_has_opacity_control (MATE_COLOR_SELECTION(colorseldiag->colorsel), FALSE); gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (colorseldiag))), colorseldiag->colorsel); gtk_widget_show (colorseldiag->colorsel); colorseldiag->cancel_button = gtk_dialog_add_button (GTK_DIALOG (colorseldiag), #if GTK_CHECK_VERSION (3, 10, 0) _("_Cancel"), #else GTK_STOCK_CANCEL, #endif GTK_RESPONSE_CANCEL); colorseldiag->ok_button = gtk_dialog_add_button (GTK_DIALOG (colorseldiag), #if GTK_CHECK_VERSION (3, 10, 0) _("_OK"), #else GTK_STOCK_OK, #endif GTK_RESPONSE_OK); gtk_widget_grab_default (colorseldiag->ok_button); colorseldiag->help_button = gtk_dialog_add_button (GTK_DIALOG (colorseldiag), #if GTK_CHECK_VERSION (3, 10, 0) _("_Help"), #else GTK_STOCK_HELP, #endif GTK_RESPONSE_HELP); gtk_widget_hide (colorseldiag->help_button); #if !GTK_CHECK_VERSION(3,0,0) gtk_dialog_set_alternative_button_order (GTK_DIALOG (colorseldiag), GTK_RESPONSE_OK, GTK_RESPONSE_CANCEL, GTK_RESPONSE_HELP, -1); #endif gtk_window_set_title (GTK_WINDOW (colorseldiag), _("Color Selection")); //_gtk_dialog_set_ignore_separator (dialog, TRUE); }