示例#1
0
GtkWidget *plugin_configure(GtkDialog *dialog)
{
	GtkWidget	*label1, *label2, *vbox;

	vbox = gtk_vbox_new(FALSE, 6);

	/* add a label and a text entry to the dialog */
	label1 = gtk_label_new(_("Path and options for the mail client:"));
	gtk_widget_show(label1);
	gtk_misc_set_alignment(GTK_MISC(label1), 0, 0.5);
	pref_widgets.entry = gtk_entry_new();
	gtk_widget_show(pref_widgets.entry);
	if (mailer != NULL)
		gtk_entry_set_text(GTK_ENTRY(pref_widgets.entry), mailer);

	label2 = gtk_label_new(_("Note: \n\t%f will be replaced by your file."\
		"\n\t%r will be replaced by recipient's email address."\
		"\n\t%b will be replaced by basename of a file"\
		"\n\tExamples:"\
		"\n\tsylpheed --attach \"%f\" --compose \"%r\""\
		"\n\tmutt -s \"Sending \'%b\'\" -a \"%f\" \"%r\""));
	gtk_label_set_selectable(GTK_LABEL(label2), TRUE);
	gtk_widget_show(label2);
	gtk_misc_set_alignment(GTK_MISC(label2), 0, 0.5);

	pref_widgets.checkbox_icon_to_toolbar = gtk_check_button_new_with_label(_("Show toolbar icon"));
	gtk_widget_set_tooltip_text(pref_widgets.checkbox_icon_to_toolbar,
		_("Shows a icon in the toolbar to send file more easy."));
	gtk_button_set_focus_on_click(GTK_BUTTON(pref_widgets.checkbox_icon_to_toolbar), FALSE);
	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pref_widgets.checkbox_icon_to_toolbar), icon_in_toolbar);
	gtk_widget_show(pref_widgets.checkbox_icon_to_toolbar);

	pref_widgets.checkbox_use_addressdialog = gtk_check_button_new_with_label(_
		("Use dialog for entering email address of recipients"));

	gtk_button_set_focus_on_click(GTK_BUTTON(pref_widgets.checkbox_use_addressdialog), FALSE);
	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pref_widgets.checkbox_use_addressdialog), use_address_dialog);
	gtk_widget_show(pref_widgets.checkbox_use_addressdialog);

	gtk_box_pack_start(GTK_BOX(vbox), label1, FALSE, FALSE, 0);
	gtk_box_pack_start(GTK_BOX(vbox), pref_widgets.entry, FALSE, FALSE, 0);
	gtk_box_pack_start(GTK_BOX(vbox), label2, FALSE, FALSE, 0);
	gtk_box_pack_start(GTK_BOX(vbox), pref_widgets.checkbox_icon_to_toolbar, FALSE, FALSE, 0);
	gtk_box_pack_start(GTK_BOX(vbox), pref_widgets.checkbox_use_addressdialog, FALSE, FALSE, 0);

	gtk_widget_show(vbox);

	g_signal_connect(dialog, "response", G_CALLBACK(on_configure_response), NULL);
	return vbox;
}
示例#2
0
文件: tab.c 项目: berte/lxterminal
/* Create a new tab. */
LXTab * lxterminal_tab_label_new(const gchar * str)
{
    /* Allocate LXTab structure. */
    LXTab * tab = g_slice_new0(LXTab);

    /* Create a horizontal box as the toplevel. */
    tab->main = gtk_hbox_new(FALSE, 4);

    /* Create the Close button. */
    tab->close_btn = gtk_button_new();
    gtk_button_set_relief(GTK_BUTTON(tab->close_btn), GTK_RELIEF_NONE);
    gtk_button_set_focus_on_click(GTK_BUTTON(tab->close_btn), FALSE);
    gtk_container_add(GTK_CONTAINER(tab->close_btn), gtk_image_new_from_stock(GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU));

    /* Make the button as small as possible. */
    GtkRcStyle * rcstyle = gtk_rc_style_new();
    rcstyle->xthickness = rcstyle->ythickness = 0;
    gtk_widget_modify_style(tab->close_btn, rcstyle);
    gtk_rc_style_unref(rcstyle),

    /* Create the label. */
    tab->label = gtk_label_new(str);
    gtk_widget_set_size_request(GTK_WIDGET(tab->label), 100, -1);
    gtk_label_set_ellipsize(GTK_LABEL(tab->label), PANGO_ELLIPSIZE_END);
    gtk_misc_set_alignment(GTK_MISC(tab->label), 0.0, 0.5);
    gtk_misc_set_padding(GTK_MISC(tab->label), 0, 0);

    /* Pack everything, show the widget and return. */
    gtk_box_pack_start(GTK_BOX(tab->main), tab->label, TRUE, TRUE, 0);
    gtk_box_pack_start(GTK_BOX(tab->main), tab->close_btn, FALSE, FALSE, 0);
    gtk_widget_show_all(tab->main);
    return tab;
}
示例#3
0
static GtkWidget *newTabLabel(OovStringRef const tabText, GtkWidget *viewTopParent)
    {
    GtkWidget *box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
    gtk_container_add(GTK_CONTAINER(box), gtk_label_new(tabText));
    GtkButton *button = GTK_BUTTON(gtk_button_new());
    gtk_button_set_relief(button, GTK_RELIEF_NORMAL);
    gtk_button_set_focus_on_click(button, false);
    gtk_button_set_image(button,
            gtk_image_new_from_icon_name("window-close", GTK_ICON_SIZE_SMALL_TOOLBAR)); //GTK_ICON_SIZE_MENU));

    char const * const data = "* {\n"
        "-GtkButton-default-border : 0px;\n"
        "-GtkButton-default-outside-border : 0px;\n"
        "-GtkButton-inner-border: 0px;\n"
        "-GtkWidget-focus-line-width : 0px;\n"
        "-GtkWidget-focus-padding : 0px;\n"
        "padding: 0px;\n"
        "}";
    GtkCssProvider *provider = gtk_css_provider_new();
    gtk_css_provider_load_from_data(provider, data, -1, NULL);
    GtkStyleContext *context = gtk_widget_get_style_context(GTK_WIDGET(button));
    gtk_style_context_add_provider(context, GTK_STYLE_PROVIDER(provider),
            GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
//    gtk_box_pack_start(box, button, False, False, 0);
    gtk_container_add(GTK_CONTAINER(box), GTK_WIDGET(button));

    g_signal_connect(button, "clicked", G_CALLBACK(onTabLabelCloseClicked), viewTopParent);
    gtk_widget_show_all(box);
    return box;

    }
示例#4
0
文件: window.c 项目: alexlarsson/gtk
static void
gtk_inspector_window_init (GtkInspectorWindow *iw)
{
  GIOExtensionPoint *extension_point;
  GList *l, *extensions;

  gtk_widget_init_template (GTK_WIDGET (iw));

  gtk_window_group_add_window (gtk_window_group_new (), GTK_WINDOW (iw));

  extension_point = g_io_extension_point_lookup ("gtk-inspector-page");
  extensions = g_io_extension_point_get_extensions (extension_point);

  for (l = extensions; l != NULL; l = l->next)
    {
      GIOExtension *extension = l->data;
      GType type;
      GtkWidget *widget;
      const char *name;
      char *title;
      GtkWidget *button;
      gboolean use_picker;

      type = g_io_extension_get_type (extension);

      widget = g_object_new (type, NULL);

      iw->extra_pages = g_list_prepend (iw->extra_pages, widget);

      name = g_io_extension_get_name (extension);
      g_object_get (widget, "title", &title, NULL);

      if (g_object_class_find_property (G_OBJECT_GET_CLASS (widget), "use-picker"))
        g_object_get (widget, "use-picker", &use_picker, NULL);
      else
        use_picker = FALSE;

      if (use_picker)
        {
          button = gtk_button_new_from_icon_name ("find-location-symbolic",
                                                  GTK_ICON_SIZE_MENU);
          gtk_button_set_focus_on_click (GTK_BUTTON (button), FALSE);
          gtk_widget_set_halign (button, GTK_ALIGN_START);
          gtk_widget_set_valign (button, GTK_ALIGN_CENTER);
          g_signal_connect (button, "clicked",
                            G_CALLBACK (gtk_inspector_on_inspect), iw);
        }
      else
        button = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);

      gtk_stack_add_titled (GTK_STACK (iw->top_stack), widget, name, title);
      gtk_stack_add_named (GTK_STACK (iw->button_stack), button, name);
      gtk_widget_show (widget);
      gtk_widget_show (button);

      g_free (title);
    }

}
示例#5
0
GtkWidget * FontButton::newFontButton() {
	GtkWidget * w = gtk_font_button_new();
	gtk_widget_show(w);
	gtk_font_button_set_use_font(GTK_FONT_BUTTON(w), TRUE);
	gtk_button_set_focus_on_click(GTK_BUTTON(w), FALSE);

	return w;
}
示例#6
0
void
gdm_extension_list_add_extension (GdmExtensionList  *extension_list,
                                  GdmLoginExtension *extension)
{
        GtkWidget *image;
        GtkWidget *button;
        GIcon     *icon;
        char      *description;

        if (extension_list->priv->extensions == NULL) {
                button = gtk_radio_button_new (NULL);
        } else {
                GdmLoginExtension *previous_extension;
                GtkRadioButton *previous_button;

                previous_extension = GDM_LOGIN_EXTENSION (extension_list->priv->extensions->data);
                previous_button = GTK_RADIO_BUTTON (g_object_get_data (G_OBJECT (previous_extension), "gdm-extension-list-button"));
                button = gtk_radio_button_new_from_widget (previous_button);
        }
        g_object_set_data (G_OBJECT (extension), "gdm-extension-list-button", button);

        g_object_set (G_OBJECT (button), "draw-indicator", FALSE, NULL);
        g_object_set_data (G_OBJECT (button), "gdm-extension", extension);
        g_signal_connect_swapped (button, "toggled",
                                  G_CALLBACK (on_extension_toggled),
                                  extension_list);

        gtk_button_set_focus_on_click (GTK_BUTTON (button), FALSE);
        gtk_widget_set_sensitive (button, gdm_login_extension_is_enabled (extension));

        g_signal_connect_swapped (G_OBJECT (extension), "enabled",
                                  G_CALLBACK (on_extension_enabled),
                                  extension_list);

        g_signal_connect_swapped (G_OBJECT (extension), "disabled",
                                  G_CALLBACK (on_extension_disabled),
                                  extension_list);

        icon = gdm_login_extension_get_icon (extension);
        image = gtk_image_new_from_gicon (icon, GTK_ICON_SIZE_SMALL_TOOLBAR);
        g_object_unref (icon);

        gtk_widget_show (image);
        gtk_container_add (GTK_CONTAINER (button), image);
        description = gdm_login_extension_get_description (extension);
        gtk_widget_set_tooltip_text (button, description);
        g_free (description);
        gtk_widget_show (button);

        gtk_container_add (GTK_CONTAINER (extension_list->priv->box), button);
        extension_list->priv->extensions = g_list_append (extension_list->priv->extensions,
                                                g_object_ref (extension));

        if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button))) {
                g_signal_emit (extension_list, signals[ACTIVATED], 0, extension);
        }
}
示例#7
0
static GtkWidget *
build_tab_label (NautilusNotebook *nb, NautilusWindowSlot *slot)
{
	GtkWidget *hbox, *label, *close_button, *image, *spinner, *icon;

	/* set hbox spacing and label padding (see below) so that there's an
	 * equal amount of space around the label */
	hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 4);
	gtk_widget_show (hbox);

	/* setup load feedback */
	spinner = gtk_spinner_new ();
	gtk_box_pack_start (GTK_BOX (hbox), spinner, FALSE, FALSE, 0);

	/* setup site icon, empty by default */
	icon = gtk_image_new ();
	gtk_box_pack_start (GTK_BOX (hbox), icon, FALSE, FALSE, 0);
	/* don't show the icon */

	/* setup label */
	label = gtk_label_new (NULL);
	gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END);
	gtk_label_set_single_line_mode (GTK_LABEL (label), TRUE);
	gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
	gtk_misc_set_padding (GTK_MISC (label), 0, 0);
	gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
	gtk_widget_show (label);

	/* setup close button */
	close_button = gtk_button_new ();
	gtk_button_set_relief (GTK_BUTTON (close_button),
			       GTK_RELIEF_NONE);
	/* don't allow focus on the close button */
	gtk_button_set_focus_on_click (GTK_BUTTON (close_button), FALSE);

	gtk_widget_set_name (close_button, "nautilus-tab-close-button");

	image = gtk_image_new_from_icon_name ("window-close-symbolic", GTK_ICON_SIZE_MENU);
	gtk_widget_set_tooltip_text (close_button, _("Close tab"));
	g_signal_connect_object (close_button, "clicked",
				 G_CALLBACK (close_button_clicked_cb), slot, 0);

	gtk_container_add (GTK_CONTAINER (close_button), image);
	gtk_widget_show (image);

	gtk_box_pack_start (GTK_BOX (hbox), close_button, FALSE, FALSE, 0);
	gtk_widget_show (close_button);

	nautilus_drag_slot_proxy_init (hbox, NULL, slot);

	g_object_set_data (G_OBJECT (hbox), "label", label);
	g_object_set_data (G_OBJECT (hbox), "spinner", spinner);
	g_object_set_data (G_OBJECT (hbox), "icon", icon);
	g_object_set_data (G_OBJECT (hbox), "close-button", close_button);

	return hbox;
}
示例#8
0
static void
empathy_presence_chooser_init (EmpathyPresenceChooser *chooser)
{
	GtkWidget                  *arrow;
	GtkWidget                  *alignment;
	EmpathyPresenceChooserPriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (chooser,
		EMPATHY_TYPE_PRESENCE_CHOOSER, EmpathyPresenceChooserPriv);

	chooser->priv = priv;
	gtk_button_set_relief (GTK_BUTTON (chooser), GTK_RELIEF_NONE);
	gtk_button_set_focus_on_click (GTK_BUTTON (chooser), FALSE);

	alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
	gtk_widget_show (alignment);
	gtk_container_add (GTK_CONTAINER (chooser), alignment);
	gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 1, 0);

	priv->hbox = gtk_hbox_new (FALSE, 1);
	gtk_widget_show (priv->hbox);
	gtk_container_add (GTK_CONTAINER (alignment), priv->hbox);

	priv->image = gtk_image_new ();
	gtk_widget_show (priv->image);
	gtk_box_pack_start (GTK_BOX (priv->hbox), priv->image, FALSE, TRUE, 0);

	priv->label = gtk_label_new (NULL);
	gtk_widget_show (priv->label);
	gtk_box_pack_start (GTK_BOX (priv->hbox), priv->label, TRUE, TRUE, 0);
	gtk_label_set_ellipsize (GTK_LABEL (priv->label), PANGO_ELLIPSIZE_END);
	gtk_misc_set_alignment (GTK_MISC (priv->label), 0, 0.5);
	gtk_misc_set_padding (GTK_MISC (priv->label), 4, 1);

	alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
	gtk_widget_show (alignment);
	gtk_box_pack_start (GTK_BOX (priv->hbox), alignment, FALSE, FALSE, 0);

	arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_OUT);
	gtk_widget_show (arrow);
	gtk_container_add (GTK_CONTAINER (alignment), arrow);

	g_signal_connect (chooser, "toggled",
			  G_CALLBACK (presence_chooser_toggled_cb),
			  NULL);
	g_signal_connect (chooser, "button-press-event",
			  G_CALLBACK (presence_chooser_button_press_event_cb),
			  NULL);
	g_signal_connect (chooser, "scroll-event",
			  G_CALLBACK (presence_chooser_scroll_event_cb),
			  NULL);

	priv->idle = empathy_idle_dup_singleton ();
	presence_chooser_presence_changed_cb (chooser);
	g_signal_connect_swapped (priv->idle, "notify",
				  G_CALLBACK (presence_chooser_presence_changed_cb),
				  chooser);
}
示例#9
0
static void
he_check_button_init                              (HeCheckButton *self)
{
    HeCheckButtonPrivate *priv = HE_CHECK_BUTTON_GET_PRIVATE (self);

    /* Store private part */
    self->priv = priv;

    priv->title = GTK_LABEL (gtk_label_new (NULL));
    priv->value = GTK_LABEL (gtk_label_new (NULL));
    priv->alignment = gtk_alignment_new (0.5, 0.5, 0, 0);
    priv->toggle_renderer = GTK_CELL_RENDERER_TOGGLE (gtk_cell_renderer_toggle_new ());
    priv->cell_view = gtk_cell_view_new ();
    priv->hbox = NULL;
    priv->label_box = NULL;
    priv->style = HE_CHECK_BUTTON_STYLE_NORMAL;
    priv->setting_style = FALSE;

    /* Setup the cell renderer */
	/* We need to set the correct style from the gtkrc file. Otherwise the check box
	 * does not look like a check box on a HildonCheckButton. */
	GtkStyle *style = gtk_rc_get_style_by_paths(gtk_widget_get_settings(GTK_WIDGET(self)),
			NULL, "*.HildonCheckButton.GtkAlignment.GtkHBox.GtkCellView", G_TYPE_NONE);
	gtk_widget_set_style(priv->cell_view, style);

	/* Make sure that the check box is always shown, no matter the value of gtk-button-images */
	g_signal_connect (priv->cell_view, "notify::visible", G_CALLBACK (gtk_widget_show), NULL);

	gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (priv->cell_view),
								GTK_CELL_RENDERER (priv->toggle_renderer), TRUE);

	/* Get checkbox-size style property of HildonCheckButton from theme */
	style = gtk_rc_get_style_by_paths (gtk_widget_get_settings (GTK_WIDGET(self)),
			NULL, "*.HildonCheckButton", HILDON_TYPE_CHECK_BUTTON);
	glong checkbox_size = get_style_property_long (style, HILDON_TYPE_CHECK_BUTTON, "checkbox-size");

	/* Set the indicator to the right size (the size of the pixmap) */
	g_object_set (priv->toggle_renderer, "indicator-size", checkbox_size, NULL);

	/* Setup the labels */
    gtk_widget_set_name (GTK_WIDGET (priv->title), "hildon-button-title");
    gtk_widget_set_name (GTK_WIDGET (priv->value), "hildon-button-value");

    he_check_button_set_style (self, HE_CHECK_BUTTON_STYLE_NORMAL);

    gtk_misc_set_alignment (GTK_MISC (priv->title), 0, 0.5);
    gtk_misc_set_alignment (GTK_MISC (priv->value), 0, 0.5);

    g_object_ref_sink (priv->alignment);

    /* The labels are not shown automatically, see he_check_button_set_(title|value) */
    gtk_widget_set_no_show_all (GTK_WIDGET (priv->title), TRUE);
    gtk_widget_set_no_show_all (GTK_WIDGET (priv->value), TRUE);

    gtk_button_set_focus_on_click (GTK_BUTTON (self), FALSE);
}
示例#10
0
PraghaScanner *
pragha_scanner_new()
{
	PraghaScanner *scanner;
	PraghaStatusbar *statusbar;
	GtkWidget *hbox, *progress_bar, *button, *image;

	scanner = g_slice_new0(PraghaScanner);

	/* Create widgets */
	hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);

	progress_bar = gtk_progress_bar_new();
	gtk_widget_set_size_request(progress_bar, PROGRESS_BAR_WIDTH, -1);

	gtk_progress_bar_set_show_text (GTK_PROGRESS_BAR(progress_bar), TRUE);

	button = gtk_button_new ();
	image = gtk_image_new_from_icon_name ("process-stop", GTK_ICON_SIZE_MENU);
	gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
	gtk_button_set_focus_on_click (GTK_BUTTON (button), FALSE);
	gtk_container_add (GTK_CONTAINER (button), image);

	g_signal_connect(G_OBJECT (button),
			 "clicked",
			 G_CALLBACK(scanner_cancel_click_handler),
			 scanner);

	gtk_box_pack_start (GTK_BOX (hbox), progress_bar, FALSE, FALSE, 0);
	gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);

	/* Init the rest and save references */

	scanner->progress_bar = progress_bar;
	scanner->hbox = hbox;
	scanner->tracks_table = g_hash_table_new_full (g_str_hash,
	                                               g_str_equal,
	                                               g_free,
	                                               g_object_unref);
	scanner->files_scanned = 0;
	g_mutex_init (&scanner->files_scanned_mutex);
	scanner->no_files = 0;
	g_mutex_init (&scanner->no_files_mutex);
	scanner->cancellable = g_cancellable_new ();
	scanner->update_timeout = 0;

	/* Append the widget */

	statusbar = pragha_statusbar_get ();
	pragha_statusbar_add_widget(statusbar, hbox);
	g_object_unref(G_OBJECT(statusbar));

	return scanner;
}
static void
photos_delete_notification_constructed (GObject *object)
{
  PhotosDeleteNotification *self = PHOTOS_DELETE_NOTIFICATION (object);
  gchar *msg;
  GtkWidget *close;
  GtkWidget *image;
  GtkWidget *label;
  GtkWidget *undo;
  guint length;

  G_OBJECT_CLASS (photos_delete_notification_parent_class)->constructed (object);

  length = g_list_length (self->items);
  if (length == 1)
    {
      const gchar *name;

      name = photos_base_item_get_name_with_fallback (PHOTOS_BASE_ITEM (self->items->data));
      msg = g_strdup_printf (_("“%s” deleted"), name);
    }
  else
    msg = g_strdup_printf (ngettext ("%d item deleted", "%d items deleted", length), length);

  label = gtk_label_new (msg);
  gtk_widget_set_halign (label, GTK_ALIGN_START);
  gtk_widget_set_hexpand (label, TRUE);
  gtk_container_add (GTK_CONTAINER (self), label);
  g_free (msg);

  undo = gtk_button_new_with_label (_("Undo"));
  gtk_widget_set_valign (undo, GTK_ALIGN_CENTER);
  gtk_container_add (GTK_CONTAINER (self), undo);
  g_signal_connect_swapped (undo, "clicked", G_CALLBACK (photos_delete_notification_undo_clicked), self);

  image = gtk_image_new_from_icon_name (PHOTOS_ICON_WINDOW_CLOSE_SYMBOLIC, GTK_ICON_SIZE_INVALID);
  gtk_widget_set_margin_bottom (image, 2);
  gtk_widget_set_margin_top (image, 2);
  gtk_image_set_pixel_size (GTK_IMAGE (image), 16);

  close = gtk_button_new ();
  gtk_widget_set_valign (close, GTK_ALIGN_CENTER);
  gtk_button_set_focus_on_click (GTK_BUTTON (close), FALSE);
  gtk_button_set_relief (GTK_BUTTON (close), GTK_RELIEF_NONE);
  gtk_button_set_image (GTK_BUTTON (close), image);
  gtk_container_add (GTK_CONTAINER (self), close);
  g_signal_connect_swapped (close, "clicked", G_CALLBACK (photos_delete_notification_delete_items), self);

  photos_notification_manager_add_notification (PHOTOS_NOTIFICATION_MANAGER (self->ntfctn_mngr),
                                                GTK_WIDGET (self));

  self->timeout_id = g_timeout_add_seconds (DELETE_TIMEOUT, photos_delete_notification_timeout, self);
}
/**
 * xfce_panel_create_toggle_button:
 *
 * Create regular #GtkToggleButton with a few properties set to be useful in
 * Xfce panel: Flat (%GTK_RELIEF_NONE), no focus on click and minimal padding.
 *
 * Returns: newly created #GtkToggleButton.
 **/
GtkWidget *
xfce_panel_create_toggle_button (void)
{
  GtkWidget *button = gtk_toggle_button_new ();

  GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_DEFAULT | GTK_CAN_FOCUS);
  gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
  gtk_button_set_focus_on_click (GTK_BUTTON (button), FALSE);
  gtk_widget_set_name (button, "xfce-panel-toggle-button");

  return button;
}
static void
gtk_scale_button_init (GtkScaleButton *button)
{
  GtkScaleButtonPrivate *priv;

  button->priv = priv = GET_PRIVATE (button);

  priv->timeout = FALSE;
  priv->click_id = 0;
  priv->click_timeout = CLICK_TIMEOUT;
  priv->orientation = GTK_ORIENTATION_VERTICAL;

  gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
  gtk_button_set_focus_on_click (GTK_BUTTON (button), FALSE);

  /* image */
  priv->image = gtk_image_new ();
  gtk_container_add (GTK_CONTAINER (button), priv->image);
  gtk_widget_show_all (priv->image);

  /* window */
  priv->dock = gtk_window_new (GTK_WINDOW_POPUP);
  gtk_widget_set_name (priv->dock, "gtk-scalebutton-popup-window");
  g_signal_connect (priv->dock, "button-press-event",
		    G_CALLBACK (cb_dock_button_press), button);
  g_signal_connect (priv->dock, "key-release-event",
		    G_CALLBACK (cb_dock_key_release), button);
  g_signal_connect (priv->dock, "grab-notify",
		    G_CALLBACK (cb_dock_grab_notify), button);
  g_signal_connect (priv->dock, "grab-broken-event",
		    G_CALLBACK (cb_dock_grab_broken_event), button);
  gtk_window_set_decorated (GTK_WINDOW (priv->dock), FALSE);

  /* + */
  button->plus_button = gtk_button_new_with_label ("+");
  gtk_button_set_relief (GTK_BUTTON (button->plus_button), GTK_RELIEF_NONE);
  g_signal_connect (button->plus_button, "button-press-event",
		    G_CALLBACK (cb_button_press), button);
  g_signal_connect (button->plus_button, "button-release-event",
		    G_CALLBACK (cb_button_release), button);

  /* - */
  button->minus_button = gtk_button_new_with_label ("-");
  gtk_button_set_relief (GTK_BUTTON (button->minus_button), GTK_RELIEF_NONE);
  g_signal_connect (button->minus_button, "button-press-event",
		   G_CALLBACK (cb_button_press), button);
  g_signal_connect (button->minus_button, "button-release-event",
		    G_CALLBACK (cb_button_release), button);

  priv->adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 100.0, 2, 20, 0));
  g_object_ref_sink (priv->adjustment);
}
static GObject *
terminal_tab_label_constructor (GType type,
                                guint n_construct_properties,
                                GObjectConstructParam *construct_params)
{
  GObject *object;
  TerminalTabLabel *tab_label;
  TerminalTabLabelPrivate *priv;
  GtkWidget *hbox, *label, *close_button, *image;

  object = G_OBJECT_CLASS (terminal_tab_label_parent_class)->constructor
             (type, n_construct_properties, construct_params);

  tab_label = TERMINAL_TAB_LABEL (object);
  hbox = GTK_WIDGET (tab_label);
  priv = tab_label->priv;

  g_assert (priv->screen != NULL);
  
  gtk_box_set_spacing (GTK_BOX (hbox), SPACING);

  priv->label = label = gtk_label_new (NULL);
  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
  gtk_misc_set_padding (GTK_MISC (label), 0, 0);
  gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END);
  gtk_label_set_single_line_mode (GTK_LABEL (label), TRUE);

  gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);

  priv->close_button = close_button = gtk_button_new ();
  gtk_button_set_relief (GTK_BUTTON (close_button), GTK_RELIEF_NONE);
  gtk_button_set_focus_on_click (GTK_BUTTON (close_button), FALSE);
  gtk_button_set_relief (GTK_BUTTON (close_button), GTK_RELIEF_NONE);
  gtk_widget_set_name (close_button, "gnome-terminal-tab-close-button");
  gtk_widget_set_tooltip_text (close_button, _("Close tab"));

  image = gtk_image_new_from_stock (GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU);
  gtk_container_add (GTK_CONTAINER (close_button), image);
  gtk_box_pack_end (GTK_BOX (hbox), close_button, FALSE, FALSE, 0);

  sync_tab_label (priv->screen, NULL, label);
  g_signal_connect (priv->screen, "notify::title",
                    G_CALLBACK (sync_tab_label), label);

  g_signal_connect (close_button, "clicked",
		    G_CALLBACK (close_button_clicked_cb), tab_label);

  gtk_widget_show_all (hbox);

  return object;
}
示例#15
0
/*
  Creates button
 */
extern
GtkWidget* launcher_create_button (char *id_image)
{
	GtkWidget *widget;
	GtkWidget *image;
	
	widget = gtk_button_new();
	
	image = gtk_image_new_from_pixbuf(create_pixbuf(id_image));
	gtk_button_set_image(GTK_BUTTON(widget), image);
	gtk_button_set_relief(GTK_BUTTON(widget), GTK_RELIEF_NONE);
	gtk_button_set_focus_on_click(GTK_BUTTON(widget), FALSE); 
	gtk_button_set_image_position(GTK_BUTTON(widget), GTK_POS_LEFT);
	return widget;
}
示例#16
0
int
clip_GTK_BUTTONSETFOCUSONCLICK(ClipMachine * ClipMachineMemory)
{
   C_widget *cbtn = _fetch_cw_arg(ClipMachineMemory);

   gboolean  focus_on_click = _clip_parl(ClipMachineMemory, 2);

   CHECKCWID(cbtn, GTK_IS_BUTTON);
   CHECKARG(2, LOGICAL_type_of_ClipVarType);

   gtk_button_set_focus_on_click(GTK_BUTTON(cbtn->widget), focus_on_click);

   return 0;
 err:
   return 1;
}
示例#17
0
static bool
on_simple_chat_added (ChatWindow* self,
		      Ekiga::SimpleChatPtr chat)
{
  GtkWidget* page = NULL;
  GtkWidget* hbox = NULL;
  GtkWidget* label = NULL;
  GtkWidget* close_button = NULL;
  GtkWidget* close_image = NULL;

  page = simple_chat_page_new (chat);
  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2);

  label = gtk_label_new (chat->get_title ().c_str ());
  g_object_set_data_full (G_OBJECT (label), "base-title",
			  g_strdup (chat->get_title ().c_str ()),
			  g_free);

  close_button = gtk_button_new ();
  gtk_button_set_relief (GTK_BUTTON (close_button), GTK_RELIEF_NONE);
  gtk_button_set_focus_on_click (GTK_BUTTON (close_button), FALSE);
  close_image = gtk_image_new_from_stock (GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU);
  gtk_widget_set_size_request (GTK_WIDGET (close_image), 12, 12);
  gtk_widget_set_size_request (GTK_WIDGET (close_button), 16, 16);
  gtk_container_add (GTK_CONTAINER (close_button), close_image);
  gtk_container_set_border_width (GTK_CONTAINER (close_button), 0);
  g_object_set_data (G_OBJECT (close_button), "page-widget", page);
  g_signal_connect (close_button, "clicked",
		    G_CALLBACK (on_close_button_clicked), self);

  gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 2);
  g_object_set_data (G_OBJECT (hbox), "label-widget", label);
  gtk_box_pack_end (GTK_BOX (hbox), close_button, FALSE, FALSE, 2);
  g_object_set_data (G_OBJECT (hbox), "close-button-widget", close_button);
  gtk_widget_show_all (hbox);

  gtk_notebook_append_page (GTK_NOTEBOOK (self->priv->notebook),
			    page, hbox);
  gtk_widget_show (page);
  g_signal_connect (page, "message-notice-event",
		    G_CALLBACK (on_message_notice_event), self);

  self->priv->connections.add (chat->user_requested.connect (boost::bind (&on_some_chat_user_requested, self, page)));

  return true;
}
示例#18
0
static void
glide_slide_button_init (GlideSlideButton *button)
{
  button->priv = GLIDE_SLIDE_BUTTON_GET_PRIVATE (button);

  button->priv->drawing_area = gtk_drawing_area_new ();
  gtk_container_add (GTK_CONTAINER (button), button->priv->drawing_area);
  gtk_widget_show (GTK_WIDGET (button->priv->drawing_area));
  
  g_signal_connect (button, "clicked", G_CALLBACK (glide_slide_button_clicked), NULL);
  g_signal_connect (button->priv->drawing_area, "expose-event",
		    G_CALLBACK (glide_slide_button_drawing_area_expose),
		    button);

  gtk_widget_set_size_request (button->priv->drawing_area, 80, 60);
  
  gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
  gtk_button_set_focus_on_click (GTK_BUTTON (button), FALSE);
}
示例#19
0
static void
places_button_construct(PlacesButton *self, XfcePanelPlugin *plugin)
{
    GtkOrientation orientation;

    g_assert(XFCE_IS_PANEL_PLUGIN(plugin));

    g_object_ref(plugin);
    self->plugin = plugin;

    /* from libxfce4panel */
    GTK_WIDGET_UNSET_FLAGS(self, GTK_CAN_DEFAULT|GTK_CAN_FOCUS);
    gtk_button_set_relief(GTK_BUTTON(self), GTK_RELIEF_NONE);
    gtk_button_set_focus_on_click(GTK_BUTTON(self), FALSE);

    self->alignment = gtk_alignment_new (0.0, 0.5, 1.0, 1.0);
    gtk_container_add(GTK_CONTAINER(self), self->alignment);
    gtk_widget_show(self->alignment);

    orientation = xfce_panel_plugin_get_orientation(self->plugin);
    self->box = xfce_hvbox_new(orientation, FALSE, BOX_SPACING);
    gtk_container_set_border_width(GTK_CONTAINER(self->box), 0);
    gtk_container_add(GTK_CONTAINER(self->alignment), self->box);
    gtk_widget_show(self->box);

    places_button_resize(self);

#ifdef HAS_PANEL_49
    g_signal_connect(G_OBJECT(plugin), "mode-changed",
                     G_CALLBACK(places_button_mode_changed), self);
#else
    g_signal_connect(G_OBJECT(plugin), "orientation-changed",
                     G_CALLBACK(places_button_orientation_changed), self);
#endif
    g_signal_connect(G_OBJECT(plugin), "size-changed",
                     G_CALLBACK(places_button_size_changed), self);

    self->style_set_id = g_signal_connect(G_OBJECT(self), "style-set",
                     G_CALLBACK(places_button_theme_changed), NULL);
    self->screen_changed_id = g_signal_connect(G_OBJECT(self), "screen-changed",
                     G_CALLBACK(places_button_theme_changed), NULL);

}
示例#20
0
static void
gtk_tool_button_init (GtkToolButton      *button,
		      GtkToolButtonClass *klass)
{
  GtkToolItem *toolitem = GTK_TOOL_ITEM (button);
  
  button->priv = GTK_TOOL_BUTTON_GET_PRIVATE (button);

  button->priv->contents_invalid = TRUE;

  gtk_tool_item_set_homogeneous (toolitem, TRUE);

  /* create button */
  button->priv->button = g_object_new (klass->button_type, NULL);
  gtk_button_set_focus_on_click (GTK_BUTTON (button->priv->button), FALSE);
  g_signal_connect_object (button->priv->button, "clicked",
			   G_CALLBACK (button_clicked), button, 0);

  gtk_container_add (GTK_CONTAINER (button), button->priv->button);
  gtk_widget_show (button->priv->button);
}
示例#21
0
GtkWidget *
bluefish_small_close_button_new(void)
{
	/* TODO: Add a tooltip to the button */
	GtkWidget *button, *image;
#if GTK_CHECK_VERSION(3,0,0)
	GtkCssProvider *provider;
	GtkStyleContext *context;

	static const gchar button_style[] =
		"GtkButton#bluefish-small-close-button {\n"
		  "-GtkButton-default-border: 0;\n"
		  "-GtkButton-default-outside-border: 0;\n"
		  "-GtkButton-inner-border: 0;\n"
		  "-GtkWidget-focus-line-width: 0;\n"
		  "-GtkWidget-focus-padding: 0;\n"
		  "padding: 0;\n"
		"}";
#endif

	button = gtk_button_new();
	gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
	gtk_button_set_focus_on_click(GTK_BUTTON(button), FALSE);
	gtk_widget_set_name(button, "bluefish-small-close-button");

	image = gtk_image_new_from_stock(GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU);
	gtk_button_set_image(GTK_BUTTON(button), image);

#if GTK_CHECK_VERSION(3,0,0)
	provider = gtk_css_provider_new();
	gtk_css_provider_load_from_data(provider, button_style, -1, NULL);
	context = gtk_widget_get_style_context(GTK_WIDGET(button));
	gtk_style_context_add_provider(context, GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
	g_object_unref(provider);
#else
	g_signal_connect(button, "style-set", G_CALLBACK(button_set_style), NULL);
#endif

	return button;
}
示例#22
0
/*
 * Sets the properties of the widget. This is used for both applying the
 * properties changed in the property editor, and also for loading.
 */
static void
gb_gnome_color_picker_set_properties (GtkWidget * widget, GbWidgetSetArgData * data)
{
  gboolean dither, use_alpha, focus_on_click;
  gchar *title;

  dither = gb_widget_input_bool (data, Dither);
  if (data->apply)
    gnome_color_picker_set_dither (GNOME_COLOR_PICKER (widget), dither);

  use_alpha = gb_widget_input_bool (data, UseAlpha);
  if (data->apply)
    gnome_color_picker_set_use_alpha (GNOME_COLOR_PICKER (widget), use_alpha);

  title = gb_widget_input_string (data, Title);
  if (data->apply)
    gnome_color_picker_set_title (GNOME_COLOR_PICKER (widget), title);

  focus_on_click = gb_widget_input_bool (data, FocusOnClick);
  if (data->apply)
    gtk_button_set_focus_on_click (GTK_BUTTON (widget), focus_on_click);
}
示例#23
0
static ClipmanPlugin *
clipman_new (XfcePanelPlugin *plugin)
{
    ClipmanPlugin *clipman;
    clipman = g_new0 (ClipmanPlugin, 1);
    
    clipman->clips = g_ptr_array_new ();
    clipman->plugin = plugin;
    
    clipman->tooltip = gtk_tooltips_new ();
    g_object_ref (clipman->tooltip);
    
    clipman_read (clipman);
    
    clipman->button = gtk_toggle_button_new ();
        gtk_widget_show (clipman->button);
        gtk_button_set_relief (GTK_BUTTON (clipman->button), GTK_RELIEF_NONE);
        gtk_button_set_focus_on_click (GTK_BUTTON (clipman->button), FALSE);
        
    gtk_tooltips_set_tip (GTK_TOOLTIPS(clipman->tooltip),
                          clipman->button, _("Clipboard Manager"),
                          NULL);
    
    g_signal_connect(clipman->button, "button_press_event",
            G_CALLBACK(clipman_clicked), clipman);
    
    /* Start the clipman_check function */
    clipman->TimeoutId = g_timeout_add_full(G_PRIORITY_LOW,
                                            TIMER_INTERVAL,
                                            (GSourceFunc) clipman_check,
                                            clipman,
                                            (GDestroyNotify) clipman_reset_timeout);
    
    /* Connect to the clipboards */
    defaultClip = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
    primaryClip = gtk_clipboard_get (GDK_SELECTION_PRIMARY);
            
    return clipman;
}
// Close button
GtkWidget* close_button_new()
{
  auto* self = GTK_WIDGET(g_object_new(close_button_get_type(), nullptr));
  gtk_button_set_relief(GTK_BUTTON(self), GTK_RELIEF_NONE);
  gtk_button_set_focus_on_click(GTK_BUTTON(self), FALSE);
  gtk_widget_set_can_focus(self, FALSE);
  gtk_widget_set_halign(self, GTK_ALIGN_START);

  auto const& file = decoration::Style::Get()->ThemedFilePath(CLOSE_BUTTON_INACTIVE_FILE, {PKGDATADIR"/"});
  auto* img = gtk_image_new_from_file(file.c_str());
  gtk_container_add(GTK_CONTAINER(self), img);
  CLOSE_BUTTON(self)->priv->img = GTK_IMAGE(img);

  glib::Object<GtkCssProvider> style(gtk_css_provider_new());
  gtk_css_provider_load_from_data(style, R"(
    * {padding: 0px 0px 0px 0px; border: 0px; }
  )", -1, nullptr);

  auto* style_ctx = gtk_widget_get_style_context(self);
  gtk_style_context_add_provider(style_ctx, glib::object_cast<GtkStyleProvider>(style), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);

  return self;
}
示例#25
0
/*
 * Sets the properties of the widget. This is used for both applying the
 * properties changed in the property editor, and also for loading.
 */
static void
gb_gnome_href_set_properties (GtkWidget * widget, GbWidgetSetArgData * data)
{
  gchar *url, *label_text;
  gboolean focus_on_click;

  url = gb_widget_input_string (data, HRefURL);
  if (data->apply)
    gnome_href_set_url (GNOME_HREF (widget), url && url[0] ? url : "");

  label_text = gb_widget_input_text (data, HRefLabel);
  /* Support the old name we used for the property. */
  if (!data->apply && data->action == GB_LOADING)
    label_text = gb_widget_input_text (data, "label");
  if (data->apply)
    gnome_href_set_text (GNOME_HREF (widget), label_text);
  if (data->action == GB_APPLYING)
    g_free (label_text);

  focus_on_click = gb_widget_input_bool (data, FocusOnClick);
  if (data->apply)
    gtk_button_set_focus_on_click (GTK_BUTTON (widget), focus_on_click);
}
static GtkWidget * make_close_button (gint list)
{
    GtkWidget * button = gtk_button_new ();
    gtk_button_set_relief ((GtkButton *) button, GTK_RELIEF_NONE);
    gtk_button_set_focus_on_click ((GtkButton *) button, FALSE);
    gtk_widget_set_name (button, "gtkui-tab-close-button");
    gtk_widget_set_tooltip_text (button, _("Close"));
    g_signal_connect (button, "clicked", (GCallback) close_button_cb,
     GINT_TO_POINTER (aud_playlist_get_unique_id (list)));

    GtkCssProvider * provider = gtk_css_provider_new ();
    gtk_css_provider_load_from_data (provider,
     "#gtkui-tab-close-button {"
     " -GtkButton-default-border: 0;"
     " -GtkButton-default-outside-border: 0;"
     " -GtkButton-inner-border: 0;"
     " -GtkWidget-focus-padding: 0;"
     " -GtkWidget-focus-line-width: 0;"
     " margin: 0;"
     " padding: 0; }",
     -1, NULL);

    gtk_style_context_add_provider (gtk_widget_get_style_context (button),
     GTK_STYLE_PROVIDER (provider),
     GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
    g_object_unref (provider);

    GtkWidget * icon = gtk_image_new_from_stock (GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU);
    gtk_container_add ((GtkContainer *) button, icon);

    GtkWidget * align = gtk_alignment_new (1.0, 0.5, 0.0, 0.0);
    gtk_container_add ((GtkContainer *) align, button);

    gtk_widget_show_all (align);
    return align;
}
示例#27
0
文件: finfo.c 项目: iuli09/RAle
static GtkWidget *
finfo_creeaza_buton(GtkWindow *fereastraParinte,
                    const gchar *textAfisat, fl_media_type tpImg, 
                    const gchar *textIndicatie, void (*fctClicked)(GtkWidget *, GtkWindow *)) {
  GtkWidget *btRezultat = NULL;						

  /* inițializări generale */
  btRezultat = gtk_button_new_with_label(textAfisat);
  gtk_button_set_relief(GTK_BUTTON(btRezultat), GTK_RELIEF_HALF);
  gtk_button_set_focus_on_click(GTK_BUTTON(btRezultat), FALSE);
  gtk_widget_set_tooltip_markup(btRezultat, textIndicatie);
  if(NULL != fctClicked) {
    g_signal_connect(btRezultat, "clicked", G_CALLBACK(fctClicked), fereastraParinte);
  }
  
  /* atașăm pictograma */
  GdkPixbuf *imgbtPixBuf = fl_obtine_imagine_media_scalata(tpImg, 16, 16);
  GtkWidget *imgbt = gtk_image_new_from_pixbuf(imgbtPixBuf);
  g_object_unref(imgbtPixBuf);
  gtk_button_set_image_position(GTK_BUTTON(btRezultat), GTK_POS_RIGHT);
  gtk_button_set_image(GTK_BUTTON(btRezultat), imgbt);
  
  return btRezultat;
}
示例#28
0
static GObject * main_window_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) {
	GObject * obj;
	GObjectClass * parent_class;
	MainWindow * self;
	GdkEventMask _tmp0_;
	GdkEventMask _tmp1_;
	GtkAccelGroup* _tmp2_;
	GtkAccelGroup* accel_group;
	GtkAccelGroup* _tmp3_;
	GdkRGBA bg_color = {0};
	gchar* _tmp4_ = NULL;
	gchar* _tmp5_;
	GdkRGBA _tmp6_;
	AtkObject* _tmp7_ = NULL;
	const gchar* _tmp8_ = NULL;
	GdkWindow* _tmp9_ = NULL;
	cairo_t* _tmp10_ = NULL;
	cairo_t* _tmp11_;
	cairo_surface_t* _tmp12_ = NULL;
	Background* _tmp13_;
	Background* _tmp14_;
	gboolean _tmp15_ = FALSE;
	Background* _tmp16_;
	gchar* _tmp17_ = NULL;
	gchar* _tmp18_;
	Background* _tmp19_;
	gchar* _tmp20_ = NULL;
	gchar* _tmp21_;
	gchar* _tmp22_ = NULL;
	gchar* _tmp23_;
	Background* _tmp24_;
	Background* _tmp25_;
	Background* _tmp26_;
	GtkBox* _tmp27_;
	GtkBox* _tmp28_;
	Background* _tmp29_;
	GtkBox* _tmp30_;
	GtkEventBox* _tmp31_;
	GtkEventBox* menubox;
	GtkAlignment* _tmp32_;
	GtkAlignment* menualign;
	gchar* _tmp33_ = NULL;
	gchar* shadow_path;
	gchar* _tmp34_;
	gchar* shadow_style;
	const gchar* _tmp35_;
	gboolean _tmp36_ = FALSE;
	GtkEventBox* _tmp51_;
	GtkEventBox* _tmp52_;
	GtkAlignment* _tmp53_;
	GtkEventBox* _tmp54_;
	GtkAlignment* _tmp55_;
	GtkBox* _tmp56_;
	GtkEventBox* _tmp57_;
	GtkAlignment* _tmp58_;
	GtkEventBox* _tmp59_;
	Background* _tmp60_;
	GtkAccelGroup* _tmp61_;
	MenuBar* _tmp62_;
	MenuBar* _tmp63_;
	GtkAlignment* _tmp64_;
	MenuBar* _tmp65_;
	MenuBar* _tmp66_;
	GtkBox* _tmp67_;
	GtkBox* _tmp68_;
	GtkBox* _tmp69_;
	GtkBox* _tmp70_;
	GtkBox* _tmp71_;
	GtkAlignment* _tmp72_;
	GtkAlignment* align;
	GtkAlignment* _tmp73_;
	GtkAlignment* _tmp74_;
	GtkAlignment* _tmp75_;
	GtkBox* _tmp76_;
	GtkAlignment* _tmp77_;
	FlatButton* _tmp78_;
	GtkButton* _tmp79_;
	gchar* _tmp80_ = NULL;
	gchar* _tmp81_;
	GtkImage* _tmp82_;
	GtkImage* _tmp83_;
	GtkImage* image;
	GtkImage* _tmp84_;
	GtkButton* _tmp85_;
	GtkButton* _tmp86_;
	GtkImage* _tmp87_;
	GtkButton* _tmp88_;
	GtkAlignment* _tmp89_;
	GtkButton* _tmp90_;
	GtkAlignment* _tmp91_;
	GtkAlignment* _tmp92_;
	GtkBox* _tmp93_;
	GtkAlignment* _tmp94_;
	ListStack* _tmp95_;
	ListStack* _tmp96_;
	GtkAlignment* _tmp97_;
	ListStack* _tmp98_;
	UnityGreeter* _tmp99_;
	gboolean _tmp100_;
	GError * _inner_error_ = NULL;
	parent_class = G_OBJECT_CLASS (main_window_parent_class);
	obj = parent_class->constructor (type, n_construct_properties, construct_properties);
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_MAIN_WINDOW, MainWindow);
	_tmp0_ = gtk_widget_get_events ((GtkWidget*) self);
	_tmp1_ = _tmp0_;
	gtk_widget_set_events ((GtkWidget*) self, _tmp1_ | GDK_POINTER_MOTION_MASK);
	_tmp2_ = gtk_accel_group_new ();
	accel_group = _tmp2_;
	_tmp3_ = accel_group;
	gtk_window_add_accel_group ((GtkWindow*) self, _tmp3_);
	memset (&bg_color, 0, sizeof (GdkRGBA));
	_tmp4_ = ug_settings_get_string (UG_SETTINGS_KEY_BACKGROUND_COLOR);
	_tmp5_ = _tmp4_;
	gdk_rgba_parse (&bg_color, _tmp5_);
	_g_free0 (_tmp5_);
	_tmp6_ = bg_color;
	gtk_widget_override_background_color ((GtkWidget*) self, GTK_STATE_FLAG_NORMAL, &_tmp6_);
	_tmp7_ = gtk_widget_get_accessible ((GtkWidget*) self);
	_tmp8_ = _ ("Login Screen");
	atk_object_set_name (_tmp7_, _tmp8_);
	gtk_window_set_has_resize_grip ((GtkWindow*) self, FALSE);
	unity_greeter_add_style_class ((GtkWidget*) self);
	gtk_widget_realize ((GtkWidget*) self);
	_tmp9_ = gtk_widget_get_window ((GtkWidget*) self);
	_tmp10_ = gdk_cairo_create (_tmp9_);
	_tmp11_ = _tmp10_;
	_tmp12_ = cairo_get_target (_tmp11_);
	_tmp13_ = background_new (_tmp12_);
	g_object_ref_sink (_tmp13_);
	_g_object_unref0 (self->priv->background);
	self->priv->background = _tmp13_;
	_cairo_destroy0 (_tmp11_);
	_tmp14_ = self->priv->background;
	_tmp15_ = ug_settings_get_boolean (UG_SETTINGS_KEY_DRAW_GRID);
	background_set_draw_grid (_tmp14_, _tmp15_);
	_tmp16_ = self->priv->background;
	_tmp17_ = ug_settings_get_string (UG_SETTINGS_KEY_BACKGROUND);
	_tmp18_ = _tmp17_;
	background_set_default_background (_tmp16_, _tmp18_);
	_g_free0 (_tmp18_);
	_tmp19_ = self->priv->background;
	_tmp20_ = ug_settings_get_string (UG_SETTINGS_KEY_LOGO);
	_tmp21_ = _tmp20_;
	_tmp22_ = ug_settings_get_string (UG_SETTINGS_KEY_BACKGROUND_LOGO);
	_tmp23_ = _tmp22_;
	background_set_logo (_tmp19_, _tmp21_, _tmp23_);
	_g_free0 (_tmp23_);
	_g_free0 (_tmp21_);
	_tmp24_ = self->priv->background;
	gtk_widget_show ((GtkWidget*) _tmp24_);
	_tmp25_ = self->priv->background;
	gtk_container_add ((GtkContainer*) self, (GtkWidget*) _tmp25_);
	_tmp26_ = self->priv->background;
	unity_greeter_add_style_class ((GtkWidget*) _tmp26_);
	_tmp27_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
	g_object_ref_sink (_tmp27_);
	_g_object_unref0 (self->priv->login_box);
	self->priv->login_box = _tmp27_;
	_tmp28_ = self->priv->login_box;
	gtk_widget_show ((GtkWidget*) _tmp28_);
	_tmp29_ = self->priv->background;
	_tmp30_ = self->priv->login_box;
	gtk_container_add ((GtkContainer*) _tmp29_, (GtkWidget*) _tmp30_);
	_tmp31_ = (GtkEventBox*) gtk_event_box_new ();
	g_object_ref_sink (_tmp31_);
	menubox = _tmp31_;
	_tmp32_ = (GtkAlignment*) gtk_alignment_new (0.0f, 0.0f, 1.0f, 0.0f);
	g_object_ref_sink (_tmp32_);
	menualign = _tmp32_;
	_tmp33_ = g_build_filename (PKGDATADIR, "shadow.png", NULL, NULL);
	shadow_path = _tmp33_;
	_tmp34_ = g_strdup ("");
	shadow_style = _tmp34_;
	_tmp35_ = shadow_path;
	_tmp36_ = g_file_test (_tmp35_, G_FILE_TEST_EXISTS);
	if (_tmp36_) {
		const gchar* _tmp37_;
		gchar* _tmp38_ = NULL;
		_tmp37_ = shadow_path;
		_tmp38_ = g_strdup_printf ("background-image: url('%s');\n" \
"                            background-repeat: repeat;", _tmp37_);
		_g_free0 (shadow_style);
		shadow_style = _tmp38_;
	}
	{
		GtkCssProvider* _tmp39_;
		GtkCssProvider* style;
		GtkCssProvider* _tmp40_;
		const gchar* _tmp41_;
		gchar* _tmp42_ = NULL;
		gchar* _tmp43_;
		GtkEventBox* _tmp44_;
		GtkStyleContext* _tmp45_ = NULL;
		GtkStyleContext* _tmp46_;
		GtkStyleContext* context;
		GtkStyleContext* _tmp47_;
		GtkCssProvider* _tmp48_;
		_tmp39_ = gtk_css_provider_new ();
		style = _tmp39_;
		_tmp40_ = style;
		_tmp41_ = shadow_style;
		_tmp42_ = g_strdup_printf ("* {background-color: transparent;\n" \
"                                      %s\n" \
"                                     }", _tmp41_);
		_tmp43_ = _tmp42_;
		gtk_css_provider_load_from_data (_tmp40_, _tmp43_, (gssize) (-1), &_inner_error_);
		_g_free0 (_tmp43_);
		if (_inner_error_ != NULL) {
			_g_object_unref0 (style);
			goto __catch11_g_error;
		}
		_tmp44_ = menubox;
		_tmp45_ = gtk_widget_get_style_context ((GtkWidget*) _tmp44_);
		_tmp46_ = _g_object_ref0 (_tmp45_);
		context = _tmp46_;
		_tmp47_ = context;
		_tmp48_ = style;
		gtk_style_context_add_provider (_tmp47_, (GtkStyleProvider*) _tmp48_, (guint) GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
		_g_object_unref0 (context);
		_g_object_unref0 (style);
	}
	goto __finally11;
	__catch11_g_error:
	{
		GError* e = NULL;
		GError* _tmp49_;
		const gchar* _tmp50_;
		e = _inner_error_;
		_inner_error_ = NULL;
		_tmp49_ = e;
		_tmp50_ = _tmp49_->message;
		g_debug ("main-window.vala:87: Internal error loading menubox style: %s", _tmp50_);
		_g_error_free0 (e);
	}
	__finally11:
	if (_inner_error_ != NULL) {
		_g_free0 (shadow_style);
		_g_free0 (shadow_path);
		_g_object_unref0 (menualign);
		_g_object_unref0 (menubox);
		_g_object_unref0 (accel_group);
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
		g_clear_error (&_inner_error_);
	}
	_tmp51_ = menubox;
	gtk_widget_set_size_request ((GtkWidget*) _tmp51_, -1, MAIN_WINDOW_MENUBAR_HEIGHT);
	_tmp52_ = menubox;
	gtk_widget_show ((GtkWidget*) _tmp52_);
	_tmp53_ = menualign;
	gtk_widget_show ((GtkWidget*) _tmp53_);
	_tmp54_ = menubox;
	_tmp55_ = menualign;
	gtk_container_add ((GtkContainer*) _tmp54_, (GtkWidget*) _tmp55_);
	_tmp56_ = self->priv->login_box;
	_tmp57_ = menubox;
	gtk_container_add ((GtkContainer*) _tmp56_, (GtkWidget*) _tmp57_);
	_tmp58_ = menualign;
	unity_greeter_add_style_class ((GtkWidget*) _tmp58_);
	_tmp59_ = menubox;
	unity_greeter_add_style_class ((GtkWidget*) _tmp59_);
	_tmp60_ = self->priv->background;
	_tmp61_ = accel_group;
	_tmp62_ = menu_bar_new (_tmp60_, _tmp61_);
	g_object_ref_sink (_tmp62_);
	_g_object_unref0 (self->menubar);
	self->menubar = _tmp62_;
	_tmp63_ = self->menubar;
	gtk_widget_show ((GtkWidget*) _tmp63_);
	_tmp64_ = menualign;
	_tmp65_ = self->menubar;
	gtk_container_add ((GtkContainer*) _tmp64_, (GtkWidget*) _tmp65_);
	_tmp66_ = self->menubar;
	unity_greeter_add_style_class ((GtkWidget*) _tmp66_);
	_tmp67_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
	g_object_ref_sink (_tmp67_);
	_g_object_unref0 (self->priv->hbox);
	self->priv->hbox = _tmp67_;
	_tmp68_ = self->priv->hbox;
	g_object_set ((GtkWidget*) _tmp68_, "expand", TRUE, NULL);
	_tmp69_ = self->priv->hbox;
	gtk_widget_show ((GtkWidget*) _tmp69_);
	_tmp70_ = self->priv->login_box;
	_tmp71_ = self->priv->hbox;
	gtk_container_add ((GtkContainer*) _tmp70_, (GtkWidget*) _tmp71_);
	_tmp72_ = (GtkAlignment*) gtk_alignment_new (0.5f, 0.5f, 0.0f, 0.0f);
	g_object_ref_sink (_tmp72_);
	align = _tmp72_;
	_tmp73_ = align;
	gtk_widget_set_size_request ((GtkWidget*) _tmp73_, grid_size, -1);
	_tmp74_ = align;
	gtk_widget_set_margin_bottom ((GtkWidget*) _tmp74_, MAIN_WINDOW_MENUBAR_HEIGHT);
	_tmp75_ = align;
	gtk_widget_show ((GtkWidget*) _tmp75_);
	_tmp76_ = self->priv->hbox;
	_tmp77_ = align;
	gtk_container_add ((GtkContainer*) _tmp76_, (GtkWidget*) _tmp77_);
	_tmp78_ = flat_button_new ();
	g_object_ref_sink (_tmp78_);
	_g_object_unref0 (self->priv->back_button);
	self->priv->back_button = (GtkButton*) _tmp78_;
	_tmp79_ = self->priv->back_button;
	gtk_button_set_focus_on_click (_tmp79_, FALSE);
	_tmp80_ = g_build_filename (PKGDATADIR, "arrow_left.png", NULL, NULL);
	_tmp81_ = _tmp80_;
	_tmp82_ = (GtkImage*) gtk_image_new_from_file (_tmp81_);
	g_object_ref_sink (_tmp82_);
	_tmp83_ = _tmp82_;
	_g_free0 (_tmp81_);
	image = _tmp83_;
	_tmp84_ = image;
	gtk_widget_show ((GtkWidget*) _tmp84_);
	_tmp85_ = self->priv->back_button;
	gtk_widget_set_size_request ((GtkWidget*) _tmp85_, grid_size - (GREETER_LIST_BORDER * 2), grid_size - (GREETER_LIST_BORDER * 2));
	_tmp86_ = self->priv->back_button;
	_tmp87_ = image;
	gtk_container_add ((GtkContainer*) _tmp86_, (GtkWidget*) _tmp87_);
	_tmp88_ = self->priv->back_button;
	g_signal_connect_object (_tmp88_, "clicked", (GCallback) _main_window_pop_list_gtk_button_clicked, self, 0);
	_tmp89_ = align;
	_tmp90_ = self->priv->back_button;
	gtk_container_add ((GtkContainer*) _tmp89_, (GtkWidget*) _tmp90_);
	_tmp91_ = (GtkAlignment*) gtk_alignment_new (0.0f, 0.5f, 0.0f, 1.0f);
	g_object_ref_sink (_tmp91_);
	_g_object_unref0 (align);
	align = _tmp91_;
	_tmp92_ = align;
	gtk_widget_show ((GtkWidget*) _tmp92_);
	_tmp93_ = self->priv->hbox;
	_tmp94_ = align;
	gtk_container_add ((GtkContainer*) _tmp93_, (GtkWidget*) _tmp94_);
	_tmp95_ = list_stack_new ();
	g_object_ref_sink (_tmp95_);
	_g_object_unref0 (self->stack);
	self->stack = _tmp95_;
	_tmp96_ = self->stack;
	gtk_widget_show ((GtkWidget*) _tmp96_);
	_tmp97_ = align;
	_tmp98_ = self->stack;
	gtk_container_add ((GtkContainer*) _tmp97_, (GtkWidget*) _tmp98_);
	main_window_add_user_list (self);
	_tmp99_ = unity_greeter_singleton;
	_tmp100_ = _tmp99_->test_mode;
	if (_tmp100_) {
		Monitor* _tmp101_;
		Monitor* _tmp102_;
		Background* _tmp103_;
		GList* _tmp104_;
		GList* _tmp105_;
		gconstpointer _tmp106_ = NULL;
		__g_list_free__monitor_unref0_0 (self->priv->monitors);
		self->priv->monitors = NULL;
		_tmp101_ = monitor_new (0, 0, 800, 600);
		self->priv->monitors = g_list_append (self->priv->monitors, _tmp101_);
		_tmp102_ = monitor_new (800, 120, 640, 480);
		self->priv->monitors = g_list_append (self->priv->monitors, _tmp102_);
		_tmp103_ = self->priv->background;
		_tmp104_ = self->priv->monitors;
		background_set_monitors (_tmp103_, _tmp104_);
		_tmp105_ = self->priv->monitors;
		_tmp106_ = g_list_nth_data (_tmp105_, (guint) 0);
		main_window_move_to_monitor (self, (Monitor*) _tmp106_);
		gtk_window_resize ((GtkWindow*) self, 800 + 640, 600);
	} else {
		GdkScreen* _tmp107_ = NULL;
		GdkScreen* _tmp108_;
		GdkScreen* screen;
		GdkScreen* _tmp109_;
		GdkScreen* _tmp110_;
		_tmp107_ = gtk_window_get_screen ((GtkWindow*) self);
		_tmp108_ = _g_object_ref0 (_tmp107_);
		screen = _tmp108_;
		_tmp109_ = screen;
		g_signal_connect_object (_tmp109_, "monitors-changed", (GCallback) _main_window_monitors_changed_cb_gdk_screen_monitors_changed, self, 0);
		_tmp110_ = screen;
		main_window_monitors_changed_cb (self, _tmp110_);
		_g_object_unref0 (screen);
	}
	_g_object_unref0 (image);
	_g_object_unref0 (align);
	_g_free0 (shadow_style);
	_g_free0 (shadow_path);
	_g_object_unref0 (menualign);
	_g_object_unref0 (menubox);
	_g_object_unref0 (accel_group);
	return obj;
}
示例#29
0
GtkWidget *
create_editor_window(const char *tag)
{
    GtkWidget *window;
    GtkWidget *vbox;
    GtkWidget *hbox;
    GtkWidget *label;
    GtkWidget *combo;
    GtkWidget *separator;
    GtkWidget *frame;
    GtkWidget *table;
    GtkWidget *scale;

    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    set_window_title(window, tag, "Patch Edit");
    g_signal_connect (G_OBJECT(window), "destroy",
                      G_CALLBACK (gtk_main_quit), NULL);
    g_signal_connect (G_OBJECT (window), "delete-event",
                      G_CALLBACK (on_delete_event_wrapper),
                      (gpointer)gtk_widget_hide);

    vbox = gtk_vbox_new(FALSE, 0);
    gtk_container_add (GTK_CONTAINER (window), vbox);
    gtk_container_set_border_width (GTK_CONTAINER (vbox), 6);

    editor_status_label = gtk_label_new (" ");
    gtk_container_add (GTK_CONTAINER (vbox), editor_status_label);
    gtk_misc_set_alignment (GTK_MISC (editor_status_label), 0, 0.5);

    hbox = gtk_hbox_new (FALSE, 0);
    gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
    gtk_container_set_border_width (GTK_CONTAINER (hbox), 0);

    label = gtk_label_new ("Patch Name");
    gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
    gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);

    editor_name_entry = gtk_entry_new_with_max_length(10);
    gtk_box_pack_start (GTK_BOX (hbox), editor_name_entry, FALSE, FALSE, 2);
    g_signal_connect(G_OBJECT(editor_name_entry), "changed",
                     G_CALLBACK(patch_edit_on_name_entry_changed), NULL);

    /* -FIX- comment (reuse Performance Name?)
     * GtkWidget *comment_label = gtk_label_new ("Comment");
     * gtk_box_pack_start (GTK_BOX (hbox), comment_label, FALSE, FALSE, 2);
     * gtk_misc_set_alignment (GTK_MISC (comment_label), 0, 0.5);

     * GtkWidget *comment_entry = gtk_entry_new_with_max_length(60);
     * gtk_box_pack_start (GTK_BOX (hbox), comment_entry, TRUE, TRUE, 2);
     */

    /* separator */
    separator = gtk_hseparator_new ();
    gtk_box_pack_start (GTK_BOX (vbox), separator, FALSE, FALSE, 2);

    gtk_widget_show_all(vbox);

    /* editor widgets */
    create_widgy_editor(tag);
    gtk_box_pack_start (GTK_BOX (vbox), widgy_widget, TRUE, FALSE, 2);
    gtk_widget_show(widgy_widget);

    create_retro_editor(tag);
    gtk_box_pack_start (GTK_BOX (vbox), retro_widget, TRUE, FALSE, 2);

    /* separator */
    separator = gtk_hseparator_new ();
    gtk_box_pack_start (GTK_BOX (vbox), separator, FALSE, FALSE, 2);
    gtk_widget_show(separator);

    /* edit action widgets */
    hbox = gtk_hbox_new (FALSE, 0);
    gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
    gtk_container_set_border_width (GTK_CONTAINER (hbox), 0);

    label = gtk_label_new ("Editor Mode");
    gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);

    combo = gtk_combo_box_new_text();
    gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Widgy");
    gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Retro");
    gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 0);
    gtk_box_pack_start (GTK_BOX (hbox), combo, FALSE, FALSE, 2);
    g_signal_connect(G_OBJECT(combo), "changed",
                     G_CALLBACK(patch_edit_on_mode_change), NULL);

    /* -FIX- add: [compare to original?] [swap A/B?] [close?] */

    label = gtk_label_new (NULL);
    gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, FALSE, 0);

    editor_discard_button = gtk_button_new_with_label ("Discard Changes");
    gtk_box_pack_start (GTK_BOX (hbox), editor_discard_button, FALSE, FALSE, 2);
    gtk_signal_connect (GTK_OBJECT (editor_discard_button), "clicked",
                        GTK_SIGNAL_FUNC (on_editor_discard_button_press),
                        NULL);

    editor_save_button = gtk_button_new_with_label ("Save Changes into Patch Bank");
    gtk_box_pack_start (GTK_BOX (hbox), editor_save_button, FALSE, FALSE, 2);
    gtk_signal_connect (GTK_OBJECT (editor_save_button), "clicked",
                        GTK_SIGNAL_FUNC (on_editor_save_button_press),
                        NULL);

    gtk_widget_show_all(hbox);

    /* test note widgets */
    frame = gtk_frame_new ("Test Note");
    gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);

    table = gtk_table_new (3, 3, FALSE);
    gtk_container_add (GTK_CONTAINER (frame), table);
    gtk_container_set_border_width (GTK_CONTAINER (table), 2);
    gtk_table_set_row_spacings (GTK_TABLE (table), 1);
    gtk_table_set_col_spacings (GTK_TABLE (table), 5);

    label = gtk_label_new ("key");
    gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1,
                      (GtkAttachOptions) (GTK_FILL),
                      (GtkAttachOptions) (0), 0, 0);
    gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);

    scale = gtk_hscale_new (GTK_ADJUSTMENT (test_note_key_adj));
    gtk_table_attach (GTK_TABLE (table), scale, 1, 2, 0, 1,
                      (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                      (GtkAttachOptions) (0), 0, 0);
    gtk_scale_set_value_pos (GTK_SCALE (scale), GTK_POS_RIGHT);
    gtk_scale_set_digits (GTK_SCALE (scale), 0);
    gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);

    label = gtk_label_new ("velocity");
    gtk_table_attach (GTK_TABLE (table), label, 0, 1, 1, 2,
                      (GtkAttachOptions) (GTK_FILL),
                      (GtkAttachOptions) (0), 0, 0);
    gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);

    scale = gtk_hscale_new (GTK_ADJUSTMENT (test_note_velocity_adj));
    gtk_table_attach (GTK_TABLE (table), scale, 1, 2, 1, 2,
                      (GtkAttachOptions) (GTK_FILL),
                      (GtkAttachOptions) (0), 0, 0);
    gtk_scale_set_value_pos (GTK_SCALE (scale), GTK_POS_RIGHT);
    gtk_scale_set_digits (GTK_SCALE (scale), 0);
    gtk_range_set_update_policy (GTK_RANGE (scale), GTK_UPDATE_DELAYED);

    editor_test_note_button = gtk_button_new_with_label (" Send Test Note");
    gtk_table_attach (GTK_TABLE (table), editor_test_note_button, 2, 3, 0, 2,
                      (GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
                      (GtkAttachOptions) (0), 4, 0);
    gtk_button_set_focus_on_click(GTK_BUTTON(editor_test_note_button), FALSE);
    g_signal_connect (G_OBJECT (editor_test_note_button), "pressed",
                      G_CALLBACK (on_test_note_button_press), (gpointer)1);
    g_signal_connect (G_OBJECT (editor_test_note_button), "released",
                      G_CALLBACK (on_test_note_button_press), (gpointer)0);

    gtk_widget_show_all (frame);

    editor_window = window;

    return editor_window;
}
示例#30
0
GtkWidget * create_layer_view_widget (void)
{
  GtkWidget  *vbox;
  GtkWidget  *hbox;
  GtkWidget  *label;
  GtkWidget  *hide_button;
  GtkRcStyle *rcstyle;    /* For hide_button */   
  GtkWidget  *image;      /* For hide_button */
  GtkWidget  *list;
  GtkWidget  *separator;
  GtkWidget  *scrolled_win;
  GtkWidget  *button_box;
  
  /* if layer_dialog were renamed to layer_view_data this would make
   * more sense.
   */
  layer_dialog = g_new (struct LayerDialog, 1);

  layer_dialog->diagram = NULL;

  layer_dialog->dialog = vbox = gtk_vbox_new (FALSE, 1);
    
  hbox = gtk_hbox_new (FALSE, 1);
  
  label = gtk_label_new (_ ("Layers:"));
  gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 2);
  gtk_widget_show (label);
  
  layer_dialog->diagram_omenu = NULL;

  /* Hide Button */
  hide_button = gtk_button_new ();
  gtk_button_set_relief (GTK_BUTTON (hide_button), GTK_RELIEF_NONE);
  gtk_button_set_focus_on_click (GTK_BUTTON (hide_button), FALSE);

  /* make it as small as possible */
  rcstyle = gtk_rc_style_new ();
  rcstyle->xthickness = rcstyle->ythickness = 0;
  gtk_widget_modify_style (hide_button, rcstyle);
  g_object_unref (rcstyle);

  image = gtk_image_new_from_stock (GTK_STOCK_CLOSE,
                                    GTK_ICON_SIZE_MENU);

  gtk_container_add (GTK_CONTAINER(hide_button), image);
  g_signal_connect (G_OBJECT (hide_button), "clicked", 
                    G_CALLBACK (layer_view_hide_button_clicked), NULL);    
    
  gtk_box_pack_start (GTK_BOX (hbox), hide_button, FALSE, FALSE, 2);
    
  gtk_box_pack_start (GTK_BOX(vbox), hbox, FALSE, FALSE, 2);
  gtk_widget_show_all (hbox);

  button_box = create_button_box(vbox, FALSE);
  
  gtk_box_pack_start (GTK_BOX (vbox), button_box, FALSE, FALSE, 2);
  gtk_widget_show (button_box);
    
  separator = gtk_hseparator_new();
  gtk_box_pack_start(GTK_BOX(vbox), separator, FALSE, FALSE, 2);
  gtk_widget_show (separator);

  scrolled_win = gtk_scrolled_window_new (NULL, NULL);
  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
				  GTK_POLICY_AUTOMATIC, 
				  GTK_POLICY_AUTOMATIC);
  gtk_box_pack_start (GTK_BOX (vbox), scrolled_win, TRUE, TRUE, 2);

  layer_dialog->layer_list = list = gtk_list_new();

  gtk_list_set_selection_mode (GTK_LIST (list), GTK_SELECTION_BROWSE);
  gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_win), list);
  gtk_container_set_focus_vadjustment (GTK_CONTAINER (list),
				       gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (scrolled_win)));
  gtk_widget_show (scrolled_win);
  gtk_widget_show (list);

  g_signal_connect (G_OBJECT (list), "event",
		    G_CALLBACK (layer_list_events), NULL);
    
  return vbox;
}