static void
gtk_color_button_set_property (GObject      *object,
			       guint         param_id,
			       const GValue *value,
			       GParamSpec   *pspec)
{
  GtkColorButton *color_button = GTK_COLOR_BUTTON (object);

  switch (param_id) 
    {
    case PROP_USE_ALPHA:
      gtk_color_button_set_use_alpha (color_button, g_value_get_boolean (value));
      break;
    case PROP_TITLE:
      gtk_color_button_set_title (color_button, g_value_get_string (value));
      break;
    case PROP_COLOR:
      gtk_color_button_set_color (color_button, g_value_get_boxed (value));
      break;
    case PROP_ALPHA:
      gtk_color_button_set_alpha (color_button, g_value_get_uint (value));
      break;
    default:
      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
      break;
    }
}
Beispiel #2
0
int
clip_GTK_COLORBUTTONSETUSEALPHA(ClipMachine * cm)
{
	C_widget *cbtn = _fetch_cw_arg(cm);
        gboolean alpha = _clip_parl(cm, 2);

	CHECKCWID(cbtn,GTK_IS_COLOR_BUTTON);
        CHECKARG(2, LOGICAL_t);


	gtk_color_button_set_use_alpha(GTK_COLOR_BUTTON(cbtn->widget), alpha);

	return 0;
err:
	return 1;
}
GtkWidget *
mk_transparency()
{
    GtkWidget *hbox, *hbox2, *label, *frame;

    ENTER;
    frame = gtk_frame_new(NULL);
    gtk_frame_set_shadow_type(GTK_FRAME (frame), GTK_SHADOW_NONE);
    gtk_container_set_border_width (GTK_CONTAINER (frame), 6);
    label = gtk_label_new(NULL);
    gtk_label_set_markup(GTK_LABEL (label),"<span weight=\"bold\">Transparency</span>");
    gtk_frame_set_label_widget(GTK_FRAME (frame), label);

    hbox2 = gtk_hbox_new(FALSE, 0);
    gtk_container_set_border_width (GTK_CONTAINER (hbox2), 6);
    gtk_container_add (GTK_CONTAINER (frame), hbox2);

    hbox = gtk_hbox_new(FALSE, 0);
    gtk_box_pack_start(GTK_BOX (hbox2), hbox, FALSE, TRUE, 0);
    gtk_widget_set_size_request(hbox, 20, 1);

    hbox = gtk_hbox_new(FALSE, 5);
    gtk_box_pack_start(GTK_BOX (hbox2), hbox, FALSE, TRUE, 0);

    tr_checkb = gtk_check_button_new_with_label("Enable Transparency");
    gtk_widget_show(tr_checkb);
    gtk_box_pack_start(GTK_BOX (hbox), tr_checkb, FALSE, FALSE, 0);
    g_signal_connect(G_OBJECT(tr_checkb), "toggled", G_CALLBACK(transparency_toggle), NULL);
    //gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(tr_checkb), FALSE);

    tr_colorl = gtk_label_new("Tint color:");
    gtk_misc_set_alignment(GTK_MISC(tr_colorl), 0.0, 0.5);
    gtk_widget_show(tr_colorl);
    gtk_box_pack_start(GTK_BOX (hbox), tr_colorl, FALSE, FALSE, 5);
    //gtk_widget_set_sensitive(tr_colorl, FALSE);

    tr_colorb = gtk_color_button_new();
    gtk_color_button_set_use_alpha(GTK_COLOR_BUTTON(tr_colorb), TRUE);
    gtk_color_button_set_alpha (GTK_COLOR_BUTTON(tr_colorb), 65535/256*125);
    gtk_box_pack_start(GTK_BOX (hbox), tr_colorb, FALSE, FALSE, 0);
    //gtk_widget_set_sensitive(tr_colorb, FALSE);

    RET(frame);
}
Beispiel #4
0
static void
gtk_color_button_set_property (GObject      *object,
                               guint         param_id,
                               const GValue *value,
                               GParamSpec   *pspec)
{
  GtkColorButton *button = GTK_COLOR_BUTTON (object);

  switch (param_id)
    {
    case PROP_USE_ALPHA:
      gtk_color_button_set_use_alpha (button, g_value_get_boolean (value));
      break;
    case PROP_TITLE:
      gtk_color_button_set_title (button, g_value_get_string (value));
      break;
    case PROP_COLOR:
      {
        GdkColor *color;
        GdkRGBA rgba;

        color = g_value_get_boxed (value);

        rgba.red = color->red / 65535.0;
        rgba.green = color->green / 65535.0;
        rgba.blue = color->blue / 65535.0;
        rgba.alpha = 1.0;

        gtk_color_button_set_rgba (button, &rgba);
      }
      break;
    case PROP_ALPHA:
      gtk_color_button_set_alpha (button, g_value_get_uint (value));
      break;
    case PROP_RGBA:
      gtk_color_button_set_rgba (button, g_value_get_boxed (value));
      break;
    default:
      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
      break;
    }
}
Beispiel #5
0
GtkWidget *
dialog_color_button_in_table(const gchar * color, const gchar * title, GtkWidget * table, guint left_attach,
							 guint right_attach, guint top_attach, guint bottom_attach)
{
	GdkColor gdkcolor;
	GtkWidget *button;

	if (color && gdk_color_parse(color, &gdkcolor)) {
		button = gtk_color_button_new_with_color(&gdkcolor);
	} else {
		button = gtk_color_button_new();
		gtk_color_button_set_alpha(GTK_COLOR_BUTTON(button), 0);
	}

	gtk_color_button_set_title(GTK_COLOR_BUTTON(button), title);
	gtk_color_button_set_use_alpha(GTK_COLOR_BUTTON(button), TRUE);
	gtk_table_attach(GTK_TABLE(table), button, left_attach, right_attach, top_attach, bottom_attach, GTK_FILL,
					 GTK_SHRINK, 0, 0);

	return button;
}
GtkWidget *setup_colour_editor(string col_name, rgba_t *col, string name)
{
	GtkWidget *hbox = gtk_hbox_new(false, 0);

	// Label
	GtkWidget *label = gtk_label_new(name.c_str());
	gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);

	// Colour button
	GtkWidget *c_button = gtk_color_button_new();
	gtk_color_button_set_use_alpha(GTK_COLOR_BUTTON(c_button), true);
	gtk_color_button_set_title(GTK_COLOR_BUTTON(c_button), name.c_str());

	GdkColor gdk_col;
	gdk_col.red = col->r * 255;
	gdk_col.green = col->g * 255;
	gdk_col.blue = col->b * 255;
	gtk_color_button_set_color(GTK_COLOR_BUTTON(c_button), &gdk_col);
	gtk_color_button_set_alpha(GTK_COLOR_BUTTON(c_button), col->a * 255);
	g_signal_connect(G_OBJECT(c_button), "color-set", G_CALLBACK(colour_changed), col);

	// Additive checkbox
	GtkWidget *cbox_add = gtk_check_button_new_with_label("Additive");
	g_signal_connect(G_OBJECT(cbox_add), "toggled", G_CALLBACK(additive_toggled), col);

	if (col->blend == 1)
		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cbox_add), true);

	gtk_box_pack_start(GTK_BOX(hbox), label, true, true, 0);
	gtk_box_pack_start(GTK_BOX(hbox), c_button, false, false, 4);
	gtk_box_pack_start(GTK_BOX(hbox), cbox_add, false, false, 4);

	buttons.push_back(c_button);
	cboxes.push_back(cbox_add);
	colours.push_back(col);

	return hbox;
}
Beispiel #7
0
static void
xpad_preferences_init (XpadPreferences *pref)
{
	GtkWidget *hbox, *font_hbox, *vbox;
	const GdkColor *color;
	const gchar *fontname;
	GtkStyle *style;
	GtkWidget *label, *appearance_frame, *alignment, *appearance_vbox;
	GtkWidget *options_frame, *options_vbox, *global_vbox;
	gchar *text;
	GtkSizeGroup *size_group_labels = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
	GtkRequisition req;
	
	pref->priv = XPAD_PREFERENCES_GET_PRIVATE (pref);
	
	text = g_strconcat ("<b>", _("Appearance"), "</b>", NULL);
	label = GTK_WIDGET (g_object_new (GTK_TYPE_LABEL,
		"label", text,
		"use-markup", TRUE,
		"xalign", 0.0,
		NULL));
	g_free (text);
	appearance_vbox = GTK_WIDGET (g_object_new (GTK_TYPE_VBOX,
		"homogeneous", FALSE,
		"spacing", 18,
		NULL));
	alignment = gtk_alignment_new (1, 1, 1, 1);
	g_object_set (G_OBJECT (alignment),
		"left-padding", 12,
		"top-padding", 12,
		"child", appearance_vbox,
		NULL);
	appearance_frame = GTK_WIDGET (g_object_new (GTK_TYPE_FRAME,
		"label-widget", label,
		"shadow-type", GTK_SHADOW_NONE,
		"child", alignment,
		NULL));
	
	pref->priv->textbutton = gtk_color_button_new ();
	pref->priv->backbutton = gtk_color_button_new ();
	pref->priv->fontbutton = gtk_font_button_new ();
	
	pref->priv->antifontcheck = gtk_radio_button_new_with_mnemonic (NULL, _("Use font from theme"));
	pref->priv->fontcheck = gtk_radio_button_new_with_mnemonic_from_widget (GTK_RADIO_BUTTON (pref->priv->antifontcheck), _("Use this font:"));
	pref->priv->anticolorcheck = gtk_radio_button_new_with_mnemonic (NULL, _("Use colors from theme"));
	pref->priv->colorcheck = gtk_radio_button_new_with_mnemonic_from_widget (GTK_RADIO_BUTTON (pref->priv->anticolorcheck), _("Use these colors:"));
	
	font_hbox = gtk_hbox_new (FALSE, 6);
	gtk_box_pack_start (GTK_BOX (font_hbox), pref->priv->fontcheck, FALSE, FALSE, 0);
	gtk_box_pack_start (GTK_BOX (font_hbox), pref->priv->fontbutton, TRUE, TRUE, 0);
	
	pref->priv->colorbox = gtk_vbox_new (FALSE, 6);
	hbox = gtk_hbox_new (FALSE, 12);
	label = gtk_label_new_with_mnemonic (_("Background:"));
	gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
	gtk_size_group_add_widget (size_group_labels, label);
	gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
	gtk_box_pack_start (GTK_BOX (hbox), pref->priv->backbutton, TRUE, TRUE, 0);
	g_object_set (G_OBJECT (pref->priv->colorbox), "child", hbox, NULL);
	
	hbox = gtk_hbox_new (FALSE, 12);
	label = gtk_label_new_with_mnemonic (_("Foreground:"));
	gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
	gtk_size_group_add_widget (size_group_labels, label);
	gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
	gtk_box_pack_start (GTK_BOX (hbox), pref->priv->textbutton, TRUE, TRUE, 0);
	g_object_set (G_OBJECT (pref->priv->colorbox), "child", hbox, NULL);
	
	alignment = gtk_alignment_new (1, 1, 1, 1);
	gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 12, 0);
	gtk_container_add (GTK_CONTAINER (alignment), pref->priv->colorbox);
	
	pref->priv->editcheck = gtk_check_button_new_with_mnemonic (_("_Edit lock"));
	pref->priv->stickycheck = gtk_check_button_new_with_mnemonic (_("_Pads start on all workspaces"));
	pref->priv->confirmcheck = gtk_check_button_new_with_mnemonic (_("_Confirm pad deletion"));
	
	gtk_dialog_add_button (GTK_DIALOG (pref), "gtk-close", GTK_RESPONSE_CLOSE);
	gtk_dialog_set_default_response (GTK_DIALOG (pref), GTK_RESPONSE_CLOSE);
	gtk_dialog_set_has_separator (GTK_DIALOG (pref), FALSE);
	g_signal_connect (pref, "response", G_CALLBACK (xpad_preferences_response), NULL);
	gtk_window_set_title (GTK_WINDOW (pref), _("Xpad Preferences"));
	
	gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (pref->priv->textbutton), FALSE);
	gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (pref->priv->backbutton), xpad_app_get_translucent ());
	
	gtk_color_button_set_title (GTK_COLOR_BUTTON (pref->priv->textbutton), _("Set Foreground Color"));
	gtk_color_button_set_title (GTK_COLOR_BUTTON (pref->priv->backbutton), _("Set Background Color"));
	gtk_font_button_set_title (GTK_FONT_BUTTON (pref->priv->fontbutton), _("Set Font"));
	
	/* Set current state */
	style = gtk_widget_get_default_style ();
	
	color = xpad_settings_get_back_color (xpad_settings ());
	if (color)
	{
		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pref->priv->colorcheck), TRUE);
		gtk_color_button_set_color (GTK_COLOR_BUTTON (pref->priv->backbutton), color);
	}
	else
	{
		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pref->priv->anticolorcheck), TRUE);
		gtk_widget_set_sensitive (pref->priv->colorbox, FALSE);
		gtk_color_button_set_color (GTK_COLOR_BUTTON (pref->priv->backbutton), &style->base[GTK_STATE_NORMAL]);
	}
	
	color = xpad_settings_get_text_color (xpad_settings ());
	if (color)
		gtk_color_button_set_color (GTK_COLOR_BUTTON (pref->priv->textbutton), color);
	else
		gtk_color_button_set_color (GTK_COLOR_BUTTON (pref->priv->textbutton), &style->text[GTK_STATE_NORMAL]);
	
	fontname = xpad_settings_get_fontname (xpad_settings ());
	if (fontname)
	{
		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pref->priv->fontcheck), TRUE);
		gtk_font_button_set_font_name (GTK_FONT_BUTTON (pref->priv->fontbutton), fontname);
	}
	else
	{
		gchar *str;
		
		gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pref->priv->antifontcheck), TRUE);
		gtk_widget_set_sensitive (pref->priv->fontbutton, FALSE);
		
		str = pango_font_description_to_string (style->font_desc);
		gtk_font_button_set_font_name (GTK_FONT_BUTTON (pref->priv->fontbutton), str);
		g_free (str);
	}
	
	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pref->priv->editcheck), xpad_settings_get_edit_lock (xpad_settings ()));
	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pref->priv->stickycheck), xpad_settings_get_sticky (xpad_settings ()));
	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pref->priv->confirmcheck), xpad_settings_get_confirm_destroy (xpad_settings ()));
	
	vbox = gtk_vbox_new (FALSE, 6);
	gtk_box_pack_start (GTK_BOX (vbox), pref->priv->antifontcheck, FALSE, FALSE, 0);
	gtk_box_pack_start (GTK_BOX (vbox), font_hbox, FALSE, FALSE, 0);
	gtk_box_pack_start (GTK_BOX (appearance_vbox), vbox, FALSE, FALSE, 0);
	
	vbox = gtk_vbox_new (FALSE, 6);
	gtk_box_pack_start (GTK_BOX (vbox), pref->priv->anticolorcheck, FALSE, FALSE, 0);
	gtk_box_pack_start (GTK_BOX (vbox), pref->priv->colorcheck, FALSE, FALSE, 0);
	gtk_box_pack_start (GTK_BOX (vbox), alignment, FALSE, FALSE, 0);
	gtk_box_pack_start (GTK_BOX (appearance_vbox), vbox, FALSE, FALSE, 0);
	
	
	text = g_strconcat ("<b>", _("Options"), "</b>", NULL);
	label = GTK_WIDGET (g_object_new (GTK_TYPE_LABEL,
		"label", text,
		"use-markup", TRUE,
		"xalign", 0.0,
		NULL));
	g_free (text);
	options_vbox = GTK_WIDGET (g_object_new (GTK_TYPE_VBOX,
		"homogeneous", FALSE,
		"spacing", 6,
		NULL));
	alignment = gtk_alignment_new (1, 1, 1, 1);
	g_object_set (G_OBJECT (alignment),
		"left-padding", 12,
		"top-padding", 12,
		"child", options_vbox,
		NULL);
	options_frame = GTK_WIDGET (g_object_new (GTK_TYPE_FRAME,
		"label-widget", label,
		"shadow-type", GTK_SHADOW_NONE,
		"child", alignment,
		NULL));
	
	
	gtk_box_pack_start (GTK_BOX (options_vbox), pref->priv->editcheck, FALSE, FALSE, 0);
	gtk_box_pack_start (GTK_BOX (options_vbox), pref->priv->stickycheck, FALSE, FALSE, 0);
	gtk_box_pack_start (GTK_BOX (options_vbox), pref->priv->confirmcheck, FALSE, FALSE, 0);	
	
	global_vbox = g_object_new (GTK_TYPE_VBOX,
		"border-width", 6,
		"homogeneous", FALSE,
		"spacing", 18,
		"child", appearance_frame,
		"child", options_frame,
		NULL);
	
	gtk_box_pack_start (GTK_BOX (GTK_DIALOG (pref)->vbox), global_vbox, FALSE, FALSE, 0);
	
	pref->priv->editcheck_handler = g_signal_connect (pref->priv->editcheck, "toggled", G_CALLBACK (change_edit_check), pref);
	pref->priv->stickycheck_handler = g_signal_connect (pref->priv->stickycheck, "toggled", G_CALLBACK (change_sticky_check), pref);
	pref->priv->confirmcheck_handler = g_signal_connect (pref->priv->confirmcheck, "toggled", G_CALLBACK (change_confirm_check), pref);
	pref->priv->colorcheck_handler = g_signal_connect (pref->priv->colorcheck, "toggled", G_CALLBACK (change_color_check), pref);
	pref->priv->fontcheck_handler = g_signal_connect (pref->priv->fontcheck, "toggled", G_CALLBACK (change_font_check), pref);
	pref->priv->text_handler = g_signal_connect (pref->priv->textbutton, "color-set", G_CALLBACK (change_text_color), pref);
	pref->priv->back_handler = g_signal_connect (pref->priv->backbutton, "color-set", G_CALLBACK (change_back_color), pref);
	pref->priv->font_handler = g_signal_connect (pref->priv->fontbutton, "font-set", G_CALLBACK (change_font_face), pref);
	pref->priv->notify_font_handler = g_signal_connect_swapped (xpad_settings (), "notify::fontname", G_CALLBACK (notify_fontname), pref);
	pref->priv->notify_text_handler = g_signal_connect_swapped (xpad_settings (), "notify::text-color", G_CALLBACK (notify_text_color), pref);
	pref->priv->notify_back_handler = g_signal_connect_swapped (xpad_settings (), "notify::back-color", G_CALLBACK (notify_back_color), pref);
	pref->priv->notify_sticky_handler = g_signal_connect_swapped (xpad_settings (), "notify::sticky", G_CALLBACK (notify_sticky), pref);
	pref->priv->notify_edit_handler = g_signal_connect_swapped (xpad_settings (), "notify::edit-lock", G_CALLBACK (notify_edit), pref);
	pref->priv->notify_confirm_handler = g_signal_connect_swapped (xpad_settings (), "notify::confirm-destroy", G_CALLBACK (notify_confirm), pref);
	
	g_object_unref (size_group_labels);
	
	gtk_widget_show_all (GTK_DIALOG (pref)->vbox);
	
	/* Make window not so squished */
	gtk_widget_size_request (GTK_WIDGET (pref), &req);
	g_object_set (G_OBJECT (pref), "default-width", (gint) (req.height * 0.8), NULL);
}
GtkWidget* bimp_resize_gui_new(resize_settings settings)
{
    GtkWidget *gui, *vbox_dimensions, *hbox_padding, *vbox_resolution, *hbox_values, *hbox_quality;
    GtkWidget *align_manualsize, *align_values, *align_res;
    GtkWidget *label_width, *label_height, *label_quality, *label_resX, *label_resY, *label_dpi;
    
    last_percent_w_value = settings->new_w_pc;
    last_percent_h_value = settings->new_h_pc;
    last_pixel_w_value = settings->new_w_px;
    last_pixel_h_value = settings->new_h_px;
    
    gui = gtk_hbox_new(FALSE, 10);
    
    // "change dimensions" side
    vbox_dimensions = gtk_vbox_new(FALSE, 5);
    
    radio_size_percent = gtk_radio_button_new_with_label (NULL, _("Set to a percentage of the original"));
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_size_percent), (settings->resize_mode == RESIZE_PERCENT));
    radio_size_px = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (radio_size_percent), _("Set exact size in pixel"));
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_size_px), (settings->resize_mode != RESIZE_PERCENT));
    
    align_manualsize = gtk_alignment_new(0, 0, 0, 0);
    gtk_alignment_set_padding(GTK_ALIGNMENT(align_manualsize), 0, 5, 20, 0);
    
    combo_manualsize = gtk_combo_box_new_text();
    gtk_combo_box_append_text(GTK_COMBO_BOX(combo_manualsize), _("For both dimensions"));
    gtk_combo_box_append_text(GTK_COMBO_BOX(combo_manualsize), _("Width only"));
    gtk_combo_box_append_text(GTK_COMBO_BOX(combo_manualsize), _("Height only"));
    
    if (settings->resize_mode == RESIZE_PIXEL_WIDTH) gtk_combo_box_set_active(GTK_COMBO_BOX(combo_manualsize), 1);
    else if (settings->resize_mode == RESIZE_PIXEL_HEIGHT) gtk_combo_box_set_active(GTK_COMBO_BOX(combo_manualsize), 2);
    else gtk_combo_box_set_active(GTK_COMBO_BOX(combo_manualsize), 0);
    
    gtk_container_add(GTK_CONTAINER(align_manualsize), combo_manualsize);
    
    GtkWidget* separator1 = gtk_hseparator_new();
    
    radio_stretch_allow = gtk_radio_button_new_with_label (NULL, _("Allow stretching"));
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_stretch_allow), (settings->stretch_mode == STRETCH_ALLOW));
    radio_stretch_aspect = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (radio_stretch_allow), _("Preserve aspect ratio"));
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_stretch_aspect), (settings->stretch_mode == STRETCH_ASPECT));
    radio_stretch_padded = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (radio_stretch_allow), _("Fill with padding"));
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio_stretch_padded), (settings->stretch_mode == STRETCH_PADDED));
    
    chooser_paddingcolor = gtk_color_button_new_with_color(&(settings->padding_color));
    gtk_color_button_set_use_alpha(GTK_COLOR_BUTTON(chooser_paddingcolor), TRUE);
    gtk_color_button_set_alpha(GTK_COLOR_BUTTON(chooser_paddingcolor), settings->padding_color_alpha);
    
    hbox_padding = gtk_hbox_new(FALSE, 5);
    
    GtkWidget* separator2 = gtk_hseparator_new();
    
    align_values = gtk_alignment_new(0.5, 0, 0, 0);
    gtk_alignment_set_padding(GTK_ALIGNMENT(align_values), 5, 5, 0, 0);
    hbox_values = gtk_hbox_new(FALSE, 5);
    label_width = gtk_label_new(g_strconcat(_("Width"), ":", NULL));
    spin_width = gtk_spin_button_new(NULL, 1, 0);
    gtk_widget_set_size_request (spin_width, SPIN_SIZE_W, SPIN_SIZE_H);
    label_height = gtk_label_new(g_strconcat(_("Height"), ":", NULL));
    spin_height = gtk_spin_button_new(NULL, 1, 0);
    gtk_widget_set_size_request (spin_height, SPIN_SIZE_W, SPIN_SIZE_H);
    label_unit = gtk_label_new("<unit>");
    gtk_widget_set_size_request (label_unit, 25, 25);
    
    hbox_quality = gtk_hbox_new(FALSE, 5);
    label_quality = gtk_label_new(_("Interpolation quality"));
    combo_quality = gimp_enum_combo_box_new((GType)GIMP_TYPE_INTERPOLATION_TYPE);
    gimp_int_combo_box_set_active((GimpIntComboBox*)combo_quality, settings->interpolation);
    
    GtkWidget* separator3 = gtk_vseparator_new();
    
    // "change resolution" side
    vbox_resolution = gtk_vbox_new(FALSE, 5);
    
    check_resolution = gtk_check_button_new_with_label(_("Change resolution"));
    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_resolution), settings->change_res);
    
    align_res = gtk_alignment_new(0.5, 0, 0, 0);
    gtk_alignment_set_padding(GTK_ALIGNMENT(align_res), 5, 5, 0, 0);
    hbox_res = gtk_hbox_new(FALSE, 5);
    label_resX = gtk_label_new(g_strconcat(_("X axis"), ":", NULL));
    spin_resX = gtk_spin_button_new(NULL, 1, 0);
    gtk_widget_set_size_request (spin_resX, SPIN_SIZE_W, SPIN_SIZE_H);
    gtk_spin_button_configure (GTK_SPIN_BUTTON(spin_resX), GTK_ADJUSTMENT(gtk_adjustment_new (settings->new_res_x, 0.005, 65536.000, 1.000, 1, 0)), 0, 3);
    label_resY = gtk_label_new(g_strconcat(_("Y axis"), ":", NULL));
    spin_resY = gtk_spin_button_new(NULL, 1, 0);
    gtk_widget_set_size_request (spin_resY, SPIN_SIZE_W, SPIN_SIZE_H);
    gtk_spin_button_configure (GTK_SPIN_BUTTON(spin_resY), GTK_ADJUSTMENT(gtk_adjustment_new (settings->new_res_y, 0.005, 65536.000, 1.000, 1, 0)), 0, 3);
    label_dpi = gtk_label_new("dpi");
    
    // pack everything
    
    gtk_box_pack_start(GTK_BOX(vbox_dimensions), radio_size_percent, FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(vbox_dimensions), radio_size_px, FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(vbox_dimensions), align_manualsize, FALSE, FALSE, 0);
    
    gtk_box_pack_start(GTK_BOX(vbox_dimensions), separator1, FALSE, FALSE, 0);
    
    gtk_box_pack_start(GTK_BOX(vbox_dimensions), radio_stretch_allow, FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(vbox_dimensions), radio_stretch_aspect, FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(hbox_padding), radio_stretch_padded, FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(hbox_padding), chooser_paddingcolor, FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(vbox_dimensions), hbox_padding, FALSE, FALSE, 0);
    
    gtk_box_pack_start(GTK_BOX(vbox_dimensions), separator2, FALSE, FALSE, 0);
    
    gtk_box_pack_start(GTK_BOX(hbox_values), label_width, FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(hbox_values), spin_width, FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(hbox_values), label_height, FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(hbox_values), spin_height, FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(hbox_values), label_unit, FALSE, FALSE, 0);
    gtk_container_add(GTK_CONTAINER(align_values), hbox_values);
    
    gtk_box_pack_start(GTK_BOX(hbox_quality), label_quality, FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(hbox_quality), combo_quality, FALSE, FALSE, 0);
    
    gtk_box_pack_start(GTK_BOX(vbox_dimensions), align_values, FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(vbox_dimensions), hbox_quality, FALSE, FALSE, 0);
    
    gtk_box_pack_start(GTK_BOX(vbox_resolution), check_resolution, FALSE, FALSE, 0);
    
    gtk_box_pack_start(GTK_BOX(hbox_res), label_resX, FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(hbox_res), spin_resX, FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(hbox_res), label_resY, FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(hbox_res), spin_resY, FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(hbox_res), label_dpi, FALSE, FALSE, 0);
    gtk_container_add(GTK_CONTAINER(align_res), hbox_res);
    gtk_box_pack_start(GTK_BOX(vbox_resolution), align_res, FALSE, FALSE, 0);
    
    gtk_box_pack_start(GTK_BOX(gui), vbox_dimensions, FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(gui), separator3, FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(gui), vbox_resolution, FALSE, FALSE, 0);
    
    
    previous_was_percent = FALSE;
    toggle_units_group(NULL, NULL);
    toggle_resolution(NULL, NULL);
    
    g_signal_connect(G_OBJECT(radio_size_percent), "toggled", G_CALLBACK(toggle_units_group), NULL);
    g_signal_connect(G_OBJECT(radio_size_px), "toggled", G_CALLBACK(toggle_units_group), NULL);
    g_signal_connect(G_OBJECT(combo_manualsize), "changed", G_CALLBACK(toggle_units_group), NULL);
    g_signal_connect(G_OBJECT(radio_stretch_allow), "toggled", G_CALLBACK(toggle_units_group), NULL);
    g_signal_connect(G_OBJECT(radio_stretch_aspect), "toggled", G_CALLBACK(toggle_units_group), NULL);
    g_signal_connect(G_OBJECT(radio_stretch_padded), "toggled", G_CALLBACK(toggle_units_group), NULL);
    g_signal_connect(G_OBJECT(check_resolution), "toggled", G_CALLBACK(toggle_resolution), NULL);
    
    return gui;
}
void
on_button_config (GtkMenuItem *menuitem, gpointer user_data)
{
    GtkWidget *waveform_properties;
    GtkWidget *config_dialog;
    GtkWidget *vbox01;
    GtkWidget *color_label;
    GtkWidget *color_frame;
    GtkWidget *color_table;
    GtkWidget *color_background_label;
    GtkWidget *background_color;
    GtkWidget *color_waveform_label;
    GtkWidget *foreground_color;
    GtkWidget *color_rms_label;
    GtkWidget *foreground_rms_color;
    GtkWidget *color_progressbar_label;
    GtkWidget *progressbar_color;
    GtkWidget *downmix_to_mono;
    GtkWidget *log_scale;
    GtkWidget *display_rms;
    GtkWidget *display_ruler;
    GtkWidget *style_label;
    GtkWidget *style_frame;
    GtkWidget *vbox02;
    GtkWidget *render_method_spikes;
    GtkWidget *render_method_bars;
    GtkWidget *shade_waveform;
    GtkWidget *fill_waveform;
    GtkWidget *soundcloud_style;
    GtkWidget *dialog_action_area13;
    GtkWidget *applybutton1;
    GtkWidget *cancelbutton1;
    GtkWidget *okbutton1;
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
    waveform_properties = gtk_dialog_new ();
    gtk_window_set_transient_for (GTK_WINDOW (waveform_properties), gtk_widget_get_toplevel(menuitem));
    gtk_window_set_title (GTK_WINDOW (waveform_properties), "Waveform Properties");
    gtk_window_set_type_hint (GTK_WINDOW (waveform_properties), GDK_WINDOW_TYPE_HINT_DIALOG);

    config_dialog = gtk_dialog_get_content_area (GTK_DIALOG (waveform_properties));
    gtk_widget_show (config_dialog);

    vbox01 = gtk_vbox_new (FALSE, 8);
    gtk_widget_show (vbox01);
    gtk_box_pack_start (GTK_BOX (config_dialog), vbox01, FALSE, FALSE, 0);
    gtk_container_set_border_width (GTK_CONTAINER (vbox01), 12);

    color_label = gtk_label_new (NULL);
    gtk_label_set_markup (GTK_LABEL (color_label),"<b>Colors</b>");
    gtk_widget_show (color_label);

    color_frame = gtk_frame_new ("Colors");
    gtk_frame_set_label_widget ((GtkFrame *)color_frame, color_label);
    gtk_frame_set_shadow_type ((GtkFrame *)color_frame, GTK_SHADOW_IN);
    gtk_widget_show (color_frame);
    gtk_box_pack_start (GTK_BOX (vbox01), color_frame, TRUE, FALSE, 0);

    color_table = gtk_table_new (2, 4, TRUE);
    gtk_widget_show (color_table);
    gtk_container_add (GTK_CONTAINER (color_frame), color_table);
    gtk_table_set_col_spacings ((GtkTable *) color_table, 8);
    gtk_container_set_border_width (GTK_CONTAINER (color_table), 6);

    color_background_label = gtk_label_new ("Background");
    gtk_widget_show (color_background_label);
    gtk_table_attach_defaults ((GtkTable *) color_table, color_background_label, 0,1,0,1);

    color_waveform_label = gtk_label_new ("Waveform");
    gtk_widget_show (color_waveform_label);
    gtk_table_attach_defaults ((GtkTable *) color_table, color_waveform_label, 1,2,0,1);

    color_rms_label = gtk_label_new ("RMS");
    gtk_widget_show (color_rms_label);
    gtk_table_attach_defaults ((GtkTable *) color_table, color_rms_label, 2,3,0,1);

    color_progressbar_label = gtk_label_new ("Progressbar");
    gtk_widget_show (color_progressbar_label);
    gtk_table_attach_defaults ((GtkTable *) color_table, color_progressbar_label, 3,4,0,1);

    background_color = gtk_color_button_new ();
    gtk_color_button_set_use_alpha ((GtkColorButton *)background_color, TRUE);
    gtk_widget_show (background_color);
    gtk_table_attach_defaults ((GtkTable *) color_table, background_color, 0,1,1,2);

    foreground_color = gtk_color_button_new ();
    gtk_color_button_set_use_alpha ((GtkColorButton *)foreground_color, TRUE);
    gtk_widget_show (foreground_color);
    gtk_table_attach_defaults ((GtkTable *) color_table, foreground_color, 1,2,1,2);

    foreground_rms_color = gtk_color_button_new ();
    gtk_color_button_set_use_alpha ((GtkColorButton *)foreground_rms_color, TRUE);
    gtk_widget_show (foreground_rms_color);
    gtk_table_attach_defaults ((GtkTable *) color_table, foreground_rms_color, 2,3,1,2);

    progressbar_color = gtk_color_button_new ();
    gtk_color_button_set_use_alpha ((GtkColorButton *)progressbar_color, TRUE);
    gtk_widget_show (progressbar_color);
    gtk_table_attach_defaults ((GtkTable *) color_table, progressbar_color, 3,4,1,2);

    style_label = gtk_label_new (NULL);
    gtk_label_set_markup (GTK_LABEL (style_label),"<b>Style</b>");
    gtk_widget_show (style_label);

    style_frame = gtk_frame_new ("Style");
    gtk_frame_set_label_widget ((GtkFrame *)style_frame, style_label);
    gtk_frame_set_shadow_type ((GtkFrame *)style_frame, GTK_SHADOW_IN);
    gtk_widget_show (style_frame);
    gtk_box_pack_start (GTK_BOX (vbox01), style_frame, FALSE, FALSE, 0);

    vbox02 = gtk_vbox_new (FALSE, 6);
    gtk_widget_show (vbox02);
    gtk_container_add (GTK_CONTAINER (style_frame), vbox02);

    render_method_spikes = gtk_radio_button_new_with_label (NULL, "Spikes");
    gtk_widget_show (render_method_spikes);
    gtk_box_pack_start (GTK_BOX (vbox02), render_method_spikes, TRUE, TRUE, 0);

    render_method_bars = gtk_radio_button_new_with_label_from_widget ((GtkRadioButton *)render_method_spikes, "Bars");
    gtk_widget_show (render_method_bars);
    gtk_box_pack_start (GTK_BOX (vbox02), render_method_bars, TRUE, TRUE, 0);

    fill_waveform = gtk_check_button_new_with_label ("Fill waveform");
    gtk_widget_show (fill_waveform);
    gtk_box_pack_start (GTK_BOX (vbox02), fill_waveform, TRUE, TRUE, 0);

    soundcloud_style = gtk_check_button_new_with_label ("Soundcloud style");
    gtk_widget_show (soundcloud_style);
    gtk_box_pack_start (GTK_BOX (vbox02), soundcloud_style, TRUE, TRUE, 0);

    shade_waveform = gtk_check_button_new_with_label ("Shade waveform");
    gtk_widget_show (shade_waveform);
    gtk_box_pack_start (GTK_BOX (vbox02), shade_waveform, TRUE, TRUE, 0);

    downmix_to_mono = gtk_check_button_new_with_label ("Downmix to mono");
    gtk_widget_show (downmix_to_mono);
    gtk_box_pack_start (GTK_BOX (vbox01), downmix_to_mono, FALSE, FALSE, 0);

    log_scale = gtk_check_button_new_with_label ("Logarithmic scale");
    gtk_widget_show (log_scale);
    gtk_box_pack_start (GTK_BOX (vbox01), log_scale, FALSE, FALSE, 0);

    display_rms = gtk_check_button_new_with_label ("Display RMS");
    gtk_widget_show (display_rms);
    gtk_box_pack_start (GTK_BOX (vbox01), display_rms, FALSE, FALSE, 0);

    display_ruler = gtk_check_button_new_with_label ("Display Ruler");
    gtk_widget_show (display_ruler);
    gtk_box_pack_start (GTK_BOX (vbox01), display_ruler, FALSE, FALSE, 0);

    dialog_action_area13 = gtk_dialog_get_action_area (GTK_DIALOG (waveform_properties));
    gtk_widget_show (dialog_action_area13);
    gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area13), GTK_BUTTONBOX_END);

    applybutton1 = gtk_button_new_from_stock ("gtk-apply");
    gtk_widget_show (applybutton1);
    gtk_dialog_add_action_widget (GTK_DIALOG (waveform_properties), applybutton1, GTK_RESPONSE_APPLY);
    gtk_widget_set_can_default (applybutton1, TRUE);

    cancelbutton1 = gtk_button_new_from_stock ("gtk-cancel");
    gtk_widget_show (cancelbutton1);
    gtk_dialog_add_action_widget (GTK_DIALOG (waveform_properties), cancelbutton1, GTK_RESPONSE_CANCEL);
    gtk_widget_set_can_default (cancelbutton1, TRUE);

    okbutton1 = gtk_button_new_from_stock ("gtk-ok");
    gtk_widget_show (okbutton1);
    gtk_dialog_add_action_widget (GTK_DIALOG (waveform_properties), okbutton1, GTK_RESPONSE_OK);
    gtk_widget_set_can_default (okbutton1, TRUE);

    gtk_color_button_set_color (GTK_COLOR_BUTTON (background_color), &CONFIG_BG_COLOR);
    gtk_color_button_set_color (GTK_COLOR_BUTTON (foreground_color), &CONFIG_FG_COLOR);
    gtk_color_button_set_color (GTK_COLOR_BUTTON (progressbar_color), &CONFIG_PB_COLOR);
    gtk_color_button_set_color (GTK_COLOR_BUTTON (foreground_rms_color), &CONFIG_FG_RMS_COLOR);
    gtk_color_button_set_alpha (GTK_COLOR_BUTTON (background_color), CONFIG_BG_ALPHA);
    gtk_color_button_set_alpha (GTK_COLOR_BUTTON (foreground_color), CONFIG_FG_ALPHA);
    gtk_color_button_set_alpha (GTK_COLOR_BUTTON (progressbar_color), CONFIG_PB_ALPHA);
    gtk_color_button_set_alpha (GTK_COLOR_BUTTON (foreground_rms_color), CONFIG_FG_RMS_ALPHA);

    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (downmix_to_mono), CONFIG_MIX_TO_MONO);
    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (log_scale), CONFIG_LOG_ENABLED);
    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (display_rms), CONFIG_DISPLAY_RMS);
    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (display_ruler), CONFIG_DISPLAY_RULER);
    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (shade_waveform), CONFIG_SHADE_WAVEFORM);
    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (soundcloud_style), CONFIG_SOUNDCLOUD_STYLE);
    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (fill_waveform), CONFIG_FILL_WAVEFORM);

    gtk_widget_set_sensitive (display_rms, !CONFIG_SOUNDCLOUD_STYLE);

    switch (CONFIG_RENDER_METHOD) {
    case SPIKES:
        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (render_method_spikes), TRUE);
        break;
    case BARS:
        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (render_method_bars), TRUE);
        break;
    }

    for (;;) {
        int response = gtk_dialog_run (GTK_DIALOG (waveform_properties));
        if (response == GTK_RESPONSE_OK || response == GTK_RESPONSE_APPLY) {
            gtk_color_button_get_color (GTK_COLOR_BUTTON (background_color), &CONFIG_BG_COLOR);
            gtk_color_button_get_color (GTK_COLOR_BUTTON (foreground_color), &CONFIG_FG_COLOR);
            gtk_color_button_get_color (GTK_COLOR_BUTTON (progressbar_color), &CONFIG_PB_COLOR);
            gtk_color_button_get_color (GTK_COLOR_BUTTON (foreground_rms_color), &CONFIG_FG_RMS_COLOR);
            CONFIG_BG_ALPHA = gtk_color_button_get_alpha (GTK_COLOR_BUTTON (background_color));
            CONFIG_FG_ALPHA = gtk_color_button_get_alpha (GTK_COLOR_BUTTON (foreground_color));
            CONFIG_PB_ALPHA = gtk_color_button_get_alpha (GTK_COLOR_BUTTON (progressbar_color));
            CONFIG_FG_RMS_ALPHA = gtk_color_button_get_alpha (GTK_COLOR_BUTTON (foreground_rms_color));
            CONFIG_MIX_TO_MONO = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (downmix_to_mono));
            CONFIG_LOG_ENABLED = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (log_scale));
            CONFIG_DISPLAY_RMS = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (display_rms));
            CONFIG_DISPLAY_RULER = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (display_ruler));
            CONFIG_SHADE_WAVEFORM = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (shade_waveform));
            CONFIG_SOUNDCLOUD_STYLE = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (soundcloud_style));
            CONFIG_FILL_WAVEFORM = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (fill_waveform));
            gtk_widget_set_sensitive (display_rms, !CONFIG_SOUNDCLOUD_STYLE);
            if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (render_method_spikes)) == TRUE) {
                CONFIG_RENDER_METHOD = SPIKES;
            }
            else if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (render_method_bars)) == TRUE) {
                CONFIG_RENDER_METHOD = BARS;
            }
            save_config ();
            deadbeef->sendmessage (DB_EV_CONFIGCHANGED, 0, 0, 0);
        }
        if (response == GTK_RESPONSE_APPLY) {
            continue;
        }
        break;
    }
    gtk_widget_destroy (waveform_properties);
#pragma GCC diagnostic pop
    return;
}
Beispiel #10
0
/* Plugin configuration function */
static GObject* plugin_configure(XfdashboardPlugin *self, gpointer inUserData)
{
	GtkWidget						*layout;
	GtkWidget						*widgetLabel;
	GtkWidget						*widgetValue;
	XfdashboardClockViewSettings	*settings;

	/* Get settings of plugin */
	settings=xfdashboard_clock_view_settings_new();

	/* Create layout widget */
	layout=gtk_grid_new();
	gtk_grid_set_column_spacing(GTK_GRID(layout), 8);

	/* Add widget to choose hour color */
	widgetLabel=gtk_label_new(_("Hour color:"));
	gtk_widget_set_halign(widgetLabel, GTK_ALIGN_END);
	gtk_grid_attach(GTK_GRID(layout), widgetLabel, 0, 0, 1, 1);

	widgetValue=gtk_color_button_new();
#if GTK_CHECK_VERSION(3, 4, 0)
	gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(widgetValue), TRUE);
#else
	gtk_color_button_set_use_alpha(GTK_COLOR_BUTTON(widgetValue), TRUE);
#endif
	gtk_color_button_set_title(GTK_COLOR_BUTTON(widgetValue), _("Choose color for hour hand"));
	_plugin_configure_setup_color_button(GTK_COLOR_BUTTON(widgetValue), settings, "hour-color");
	gtk_grid_attach_next_to(GTK_GRID(layout), widgetValue, widgetLabel, GTK_POS_RIGHT, 1, 1);

	/* Add widget to choose minute color */
	widgetLabel=gtk_label_new(_("Minute color:"));
	gtk_widget_set_halign(widgetLabel, GTK_ALIGN_END);
	gtk_grid_attach(GTK_GRID(layout), widgetLabel, 0, 1, 1, 1);

	widgetValue=gtk_color_button_new();
#if GTK_CHECK_VERSION(3, 4, 0)
	gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(widgetValue), TRUE);
#else
	gtk_color_button_set_use_alpha(GTK_COLOR_BUTTON(widgetValue), TRUE);
#endif
	gtk_color_button_set_title(GTK_COLOR_BUTTON(widgetValue), _("Choose color for minute hand"));
	_plugin_configure_setup_color_button(GTK_COLOR_BUTTON(widgetValue), settings, "minute-color");
	gtk_grid_attach_next_to(GTK_GRID(layout), widgetValue, widgetLabel, GTK_POS_RIGHT, 1, 1);

	/* Add widget to choose second color */
	widgetLabel=gtk_label_new(_("Second color:"));
	gtk_widget_set_halign(widgetLabel, GTK_ALIGN_END);
	gtk_grid_attach(GTK_GRID(layout), widgetLabel, 0, 2, 1, 1);

	widgetValue=gtk_color_button_new();
#if GTK_CHECK_VERSION(3, 4, 0)
	gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(widgetValue), TRUE);
#else
	gtk_color_button_set_use_alpha(GTK_COLOR_BUTTON(widgetValue), TRUE);
#endif
	gtk_color_button_set_title(GTK_COLOR_BUTTON(widgetValue), _("Choose color for second hand"));
	_plugin_configure_setup_color_button(GTK_COLOR_BUTTON(widgetValue), settings, "second-color");
	gtk_grid_attach_next_to(GTK_GRID(layout), widgetValue, widgetLabel, GTK_POS_RIGHT, 1, 1);

	/* Add widget to choose minute color */
	widgetLabel=gtk_label_new(_("Background color:"));
	gtk_widget_set_halign(widgetLabel, GTK_ALIGN_END);
	gtk_grid_attach(GTK_GRID(layout), widgetLabel, 0, 3, 1, 1);

	widgetValue=gtk_color_button_new();
#if GTK_CHECK_VERSION(3, 4, 0)
	gtk_color_chooser_set_use_alpha(GTK_COLOR_CHOOSER(widgetValue), TRUE);
#else
	gtk_color_button_set_use_alpha(GTK_COLOR_BUTTON(widgetValue), TRUE);
#endif
	gtk_color_button_set_title(GTK_COLOR_BUTTON(widgetValue), _("Choose color for background of second hand"));
	_plugin_configure_setup_color_button(GTK_COLOR_BUTTON(widgetValue), settings, "background-color");
	gtk_grid_attach_next_to(GTK_GRID(layout), widgetValue, widgetLabel, GTK_POS_RIGHT, 1, 1);

	/* Release allocated resources */
	if(settings) g_object_unref(settings);

	/* Make all widgets visible */
	gtk_widget_show_all(layout);

	/* Return layout widget containing all other widgets */
	return(G_OBJECT(layout));
}
Beispiel #11
0
ROIDialog::ROIDialog(MIL_INT MilDisplay):m_MilDisplay(MilDisplay)
   {
   GtkWidget *pickerLine;
   GtkWidget *pickerAnchor;
   GtkWidget *closeButton;
   GtkWidget *vbox;
   GtkWidget *hbox;
   GtkWidget *label;
   
   MIL_INT linecolor = MdispInquire(m_MilDisplay, M_ROI_LINE_COLOR, M_NULL);
   MIL_INT anchorcolor= MdispInquire(m_MilDisplay, M_ROI_HANDLE_COLOR, M_NULL);
   
   m_LineColor.red   = M_RGB888_R(linecolor)<<8;
   m_LineColor.green = M_RGB888_G(linecolor)<<8;
   m_LineColor.blue  = M_RGB888_B(linecolor)<<8;

   m_AnchorColor.red   = M_RGB888_R(anchorcolor)<<8;
   m_AnchorColor.green = M_RGB888_G(anchorcolor)<<8;
   m_AnchorColor.blue  = M_RGB888_B(anchorcolor)<<8;

   m_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
   gtk_window_set_title(GTK_WINDOW(m_window), "ROI Preferences");
			     
   gtk_container_set_border_width (GTK_CONTAINER (m_window), 0);

   vbox = gtk_vbox_new (FALSE, 0);
   gtk_container_add (GTK_CONTAINER (m_window), vbox);
      
   label = gtk_label_new ("Color :");
   gtk_container_add (GTK_CONTAINER (vbox), label);

   hbox = gtk_hbox_new (FALSE, 8);
   gtk_container_set_border_width (GTK_CONTAINER (hbox), 8);
   gtk_container_add (GTK_CONTAINER (vbox), hbox);
      
   label = gtk_label_new ("Line Color");
   gtk_container_add (GTK_CONTAINER (hbox), label);

   pickerLine = gtk_color_button_new ();
   gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (pickerLine), TRUE);
   gtk_container_add (GTK_CONTAINER (hbox), pickerLine);

   gtk_color_button_set_color(GTK_COLOR_BUTTON(pickerLine),&m_LineColor);
      
   hbox = gtk_hbox_new (FALSE, 8);
   gtk_container_set_border_width (GTK_CONTAINER (hbox), 8);
   gtk_container_add (GTK_CONTAINER (vbox), hbox);

   label = gtk_label_new ("Anchor Color");
   gtk_container_add (GTK_CONTAINER (hbox), label);

   pickerAnchor = gtk_color_button_new ();
   gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (pickerAnchor), TRUE);
   gtk_container_add (GTK_CONTAINER (hbox), pickerAnchor);
   
   gtk_color_button_set_color(GTK_COLOR_BUTTON(pickerAnchor),&m_AnchorColor);

   closeButton = gtk_button_new_with_label("Close");
   gtk_container_add (GTK_CONTAINER (vbox), closeButton);
   
   //signals
   g_signal_connect (closeButton,"clicked",G_CALLBACK(ROIDialog::OnClose),this);
   g_signal_connect (pickerAnchor,"color-set",G_CALLBACK(ROIDialog::OnROIAnchorColorChange),this);
   g_signal_connect (pickerLine,"color-set",G_CALLBACK(ROIDialog::OnROILineColorChange),this);
   g_signal_connect (m_window, "destroy",  G_CALLBACK(ROIDialog::OnDestroy), this);
  
   }
/** \brief Create and initialise widgets for the sky-at-glance tab.
 *
 * The widgets must be preloaded with values from config. If a config value
 * is NULL, sensible default values, eg. those from defaults.h should
 * be laoded.
 */
GtkWidget *sat_pref_sky_at_glance_create ()
{
    GtkWidget   *table;
    GtkWidget   *label;
    GtkWidget   *vbox;
    GdkColor     col;
    guint        rgb;   /* 0xRRGGBB encoded colour */
    guint        y;



    dirty = FALSE;
    reset = FALSE;

    table = gtk_table_new (16, 5, FALSE);
    gtk_table_set_row_spacings (GTK_TABLE (table), 5);
    gtk_table_set_col_spacings (GTK_TABLE (table), 5);


    label = gtk_label_new (NULL);
    gtk_label_set_markup (GTK_LABEL (label), _("<b>Time:</b>"));
    gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
    gtk_table_attach (GTK_TABLE (table), label,
                      0, 1, 0, 1,
                      GTK_FILL,
                      GTK_SHRINK,
                      0, 0);

    /* number of hours */
    label = gtk_label_new (_("Find and show passes that occur within"));
    gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
    gtk_table_attach (GTK_TABLE (table), label,
                      0, 1, 1, 2,
                      GTK_FILL,
                      GTK_SHRINK,
                      0, 0);
    timesp = gtk_spin_button_new_with_range (1, 24, 1);
    gtk_widget_set_tooltip_text (timesp,
                          _("The passes shown on the Sky at a Glance chart\n"\
                            "will begin within this number of hours."));
    gtk_spin_button_set_digits (GTK_SPIN_BUTTON (timesp), 0);
    gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (timesp), TRUE);
    gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (timesp), FALSE);
    gtk_spin_button_set_value (GTK_SPIN_BUTTON (timesp),
                               sat_cfg_get_int (SAT_CFG_INT_SKYATGL_TIME));
    g_signal_connect (G_OBJECT (timesp), "value-changed",
                      G_CALLBACK (spin_changed_cb), NULL);
    gtk_table_attach (GTK_TABLE (table), timesp,
                      1, 2, 1, 2,
                      GTK_SHRINK, GTK_SHRINK,
                      0, 0);
    label = gtk_label_new (_("hours"));
    gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
    gtk_table_attach (GTK_TABLE (table), label,
                      2, 3, 1, 2,
                      GTK_FILL,
                      GTK_SHRINK,
                      0, 0);
    
    /* separator */
    gtk_table_attach (GTK_TABLE (table),
                      gtk_hseparator_new (),
                      0, 5, 2, 3,
                      GTK_FILL | GTK_EXPAND,
                      GTK_SHRINK,
                      0, 0);



    y = 3;

    label = gtk_label_new (NULL);
    gtk_label_set_markup (GTK_LABEL (label), _("<b>Colours:</b>"));
    gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
    gtk_table_attach (GTK_TABLE (table), label,
                      0, 1, y, y+1,
                      GTK_FILL,
                      GTK_SHRINK,
                      0, 0);

    /* colour 1 */
    label = gtk_label_new (_("Colour for satellite 1: "));
    gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
    gtk_table_attach (GTK_TABLE (table), label,
                      0, 1, y+1, y+2,
                      GTK_SHRINK, GTK_SHRINK, 0, 0);
    col1 = gtk_color_button_new ();
    gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (col1), FALSE);
    gtk_color_button_set_title (GTK_COLOR_BUTTON (col1), _("Select colour 1"));
    gtk_table_attach (GTK_TABLE (table), col1,
                      1, 2, y+1, y+2,
                      GTK_FILL , GTK_FILL, 0, 0);
    gtk_widget_set_tooltip_text ( col1,
                                 _("Click to select a colour"));
    rgb = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_01);

    rgb2gdk (rgb, &col);
    gtk_color_button_set_color (GTK_COLOR_BUTTON (col1), &col);
    g_signal_connect (col1, "color-set", G_CALLBACK (colour_changed), NULL);

    /* colour 2 */
    label = gtk_label_new (_("Colour for satellite 2: "));
    gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
    gtk_table_attach (GTK_TABLE (table), label,
                      0, 1, y+2, y+3,
                      GTK_SHRINK, GTK_SHRINK, 0, 0);
    col2 = gtk_color_button_new ();
    gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (col2), FALSE);
    gtk_color_button_set_title (GTK_COLOR_BUTTON (col1), _("Select colour 2"));
    gtk_table_attach (GTK_TABLE (table), col2,
                      1, 2, y+2, y+3,
                      GTK_FILL , GTK_FILL, 0, 0);
    gtk_widget_set_tooltip_text ( col2,
                                 _("Click to select a colour"));
    rgb = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_02);

    rgb2gdk (rgb, &col);
    gtk_color_button_set_color (GTK_COLOR_BUTTON (col2), &col);
    g_signal_connect (col2, "color-set", G_CALLBACK (colour_changed), NULL);

    /* colour 3 */
    label = gtk_label_new (_("Colour for satellite 3: "));
    gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
    gtk_table_attach (GTK_TABLE (table), label,
                      0, 1, y+3, y+4,
                      GTK_SHRINK, GTK_SHRINK, 0, 0);
    col3 = gtk_color_button_new ();
    gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (col3), FALSE);
    gtk_color_button_set_title (GTK_COLOR_BUTTON (col3), _("Select colour 3"));
    gtk_table_attach (GTK_TABLE (table), col3,
                      1, 2, y+3, y+4,
                      GTK_FILL , GTK_FILL, 0, 0);
    gtk_widget_set_tooltip_text (col3,
                                 _("Click to select a colour"));
    rgb = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_03);

    rgb2gdk (rgb, &col);
    gtk_color_button_set_color (GTK_COLOR_BUTTON (col3), &col);
    g_signal_connect (col3, "color-set", G_CALLBACK (colour_changed), NULL);

    /* colour 4 */
    label = gtk_label_new (_("Colour for satellite 4: "));
    gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
    gtk_table_attach (GTK_TABLE (table), label,
                      0, 1, y+4, y+5,
                      GTK_SHRINK, GTK_SHRINK, 0, 0);
    col4 = gtk_color_button_new ();
    gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (col4), FALSE);
    gtk_color_button_set_title (GTK_COLOR_BUTTON (col4), _("Select colour 4"));
    gtk_table_attach (GTK_TABLE (table), col4,
                      1, 2, y+4, y+5,
                      GTK_FILL , GTK_FILL, 0, 0);
    gtk_widget_set_tooltip_text (col4,
                                 _("Click to select a colour"));
    rgb = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_04);

    rgb2gdk (rgb, &col);
    gtk_color_button_set_color (GTK_COLOR_BUTTON (col4), &col);
    g_signal_connect (col4, "color-set", G_CALLBACK (colour_changed), NULL);

    /* colour 5 */
    label = gtk_label_new (_("Colour for satellite 5: "));
    gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
    gtk_table_attach (GTK_TABLE (table), label,
                      0, 1, y+5, y+6,
                      GTK_SHRINK, GTK_SHRINK, 0, 0);
    col5 = gtk_color_button_new ();
    gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (col5), FALSE);
    gtk_color_button_set_title (GTK_COLOR_BUTTON (col5), _("Select colour 5"));
    gtk_table_attach (GTK_TABLE (table), col5,
                      1, 2, y+5, y+6,
                      GTK_FILL , GTK_FILL, 0, 0);
    gtk_widget_set_tooltip_text (col5,
                                 _("Click to select a colour"));
    rgb = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_05);

    rgb2gdk (rgb, &col);
    gtk_color_button_set_color (GTK_COLOR_BUTTON (col5), &col);
    g_signal_connect (col5, "color-set", G_CALLBACK (colour_changed), NULL);


    /* colour 6 */
    label = gtk_label_new (_("Colour for satellite 6: "));
    gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
    gtk_table_attach (GTK_TABLE (table), label,
                      3, 4, y+1, y+2,
                      GTK_SHRINK, GTK_SHRINK, 0, 0);
    col6 = gtk_color_button_new ();
    gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (col6), FALSE);
    gtk_color_button_set_title (GTK_COLOR_BUTTON (col6), _("Select colour 6"));
    gtk_table_attach (GTK_TABLE (table), col6,
                      4, 5, y+1, y+2,
                      GTK_FILL , GTK_FILL, 0, 0);
    gtk_widget_set_tooltip_text (col6,
                                 _("Click to select a colour"));
    rgb = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_06);

    rgb2gdk (rgb, &col);
    gtk_color_button_set_color (GTK_COLOR_BUTTON (col6), &col);
    g_signal_connect (col6, "color-set", G_CALLBACK (colour_changed), NULL);

    /* colour 7 */
    label = gtk_label_new (_("Colour for satellite 7: "));
    gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
    gtk_table_attach (GTK_TABLE (table), label,
                      3, 4, y+2, y+3,
                      GTK_SHRINK, GTK_SHRINK, 0, 0);
    col7 = gtk_color_button_new ();
    gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (col7), FALSE);
    gtk_color_button_set_title (GTK_COLOR_BUTTON (col7), _("Select colour 7"));
    gtk_table_attach (GTK_TABLE (table), col7,
                      4, 5, y+2, y+3,
                      GTK_FILL , GTK_FILL, 0, 0);
    gtk_widget_set_tooltip_text (col7,
                                 _("Click to select a colour"));
    rgb = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_07);

    rgb2gdk (rgb, &col);
    gtk_color_button_set_color (GTK_COLOR_BUTTON (col7), &col);
    g_signal_connect (col7, "color-set", G_CALLBACK (colour_changed), NULL);

    /* colour 8 */
    label = gtk_label_new (_("Colour for satellite 8: "));
    gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
    gtk_table_attach (GTK_TABLE (table), label,
                      3, 4, y+3, y+4,
                      GTK_SHRINK, GTK_SHRINK, 0, 0);
    col8 = gtk_color_button_new ();
    gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (col8), FALSE);
    gtk_color_button_set_title (GTK_COLOR_BUTTON (col8), _("Select colour 8"));
    gtk_table_attach (GTK_TABLE (table), col8,
                      4, 5, y+3, y+4,
                      GTK_FILL , GTK_FILL, 0, 0);
    gtk_widget_set_tooltip_text (col8,
                                 _("Click to select a colour"));
    rgb = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_08);

    rgb2gdk (rgb, &col);
    gtk_color_button_set_color (GTK_COLOR_BUTTON (col8), &col);
    g_signal_connect (col8, "color-set", G_CALLBACK (colour_changed), NULL);

    /* colour 9 */
    label = gtk_label_new (_("Colour for satellite 9: "));
    gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
    gtk_table_attach (GTK_TABLE (table), label,
                      3, 4, y+4, y+5,
                      GTK_SHRINK, GTK_SHRINK, 0, 0);
    col9 = gtk_color_button_new ();
    gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (col9), FALSE);
    gtk_color_button_set_title (GTK_COLOR_BUTTON (col9), _("Select colour 9"));
    gtk_table_attach (GTK_TABLE (table), col9,
                      4, 5, y+4, y+5,
                      GTK_FILL , GTK_FILL, 0, 0);
    gtk_widget_set_tooltip_text (col9,
                                 _("Click to select a colour"));
    rgb = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_09);

    rgb2gdk (rgb, &col);
    gtk_color_button_set_color (GTK_COLOR_BUTTON (col9), &col);
    g_signal_connect (col9, "color-set", G_CALLBACK (colour_changed), NULL);

    /* colour 10 */
    label = gtk_label_new (_("Colour for satellite 10: "));
    gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
    gtk_table_attach (GTK_TABLE (table), label,
                      3, 4, y+5, y+6,
                      GTK_SHRINK, GTK_SHRINK, 0, 0);
    col10 = gtk_color_button_new ();
    gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (col10), FALSE);
    gtk_color_button_set_title (GTK_COLOR_BUTTON (col10), _("Select colour 10"));
    gtk_table_attach (GTK_TABLE (table), col10,
                      4, 5, y+5, y+6,
                      GTK_FILL , GTK_FILL, 0, 0);
    gtk_widget_set_tooltip_text (col10,
                          _("Click to select a colour"));
    rgb = sat_cfg_get_int (SAT_CFG_INT_SKYATGL_COL_10);

    rgb2gdk (rgb, &col);
    gtk_color_button_set_color (GTK_COLOR_BUTTON (col10), &col);
    g_signal_connect (col10, "color-set", G_CALLBACK (colour_changed), NULL);




    /* create vertical box */
    vbox = gtk_vbox_new (FALSE, 0);
    gtk_container_set_border_width (GTK_CONTAINER (vbox), 20);
    gtk_box_pack_start (GTK_BOX (vbox), table, TRUE, TRUE, 0);

    /* create RESET button */
    create_reset_button (GTK_BOX (vbox));


    return vbox;

}
Beispiel #13
0
static void termomix_color_dialog (GtkWidget *widget, void *data) {
    GtkWidget *color_dialog;
    GtkWidget *label1, *label2;
    GtkWidget *buttonfore, *buttonback;
    GtkWidget *hbox_fore, *hbox_back;
    gint response;
    guint16 backalpha;

    color_dialog=gtk_dialog_new_with_buttons(gettext("Select color"),
            GTK_WINDOW(termomix.main_window), GTK_DIALOG_MODAL, GTK_STOCK_CANCEL,
            GTK_RESPONSE_REJECT, GTK_STOCK_APPLY, GTK_RESPONSE_ACCEPT, NULL);

    gtk_dialog_set_default_response(GTK_DIALOG(color_dialog), GTK_RESPONSE_ACCEPT);
    gtk_window_set_modal(GTK_WINDOW(color_dialog), TRUE);
    /* Set style */
    gchar *css = g_strdup_printf (HIG_DIALOG_CSS);
    gtk_css_provider_load_from_data(termomix.provider, css, -1, NULL);
    GtkStyleContext *context = gtk_widget_get_style_context (color_dialog);
    gtk_style_context_add_provider (context, 
            GTK_STYLE_PROVIDER(termomix.provider),
            GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
    g_free(css);

    hbox_fore=gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 12);
    hbox_back=gtk_box_new(FALSE, 12);
    label1=gtk_label_new(gettext("Select foreground color:"));
    label2=gtk_label_new(gettext("Select background color:"));
    buttonfore=gtk_color_button_new_with_color(&termomix.forecolor);
    buttonback=gtk_color_button_new_with_color(&termomix.backcolor);
    /* When the times comes (gtk-3.4) */
    // buttonfore=gtk_color_button_new_with_rgba(&termomix.forecolor);
    // buttonback=gtk_color_button_new_with_rgba(&termomix.backcolor);*/

    /* This rounding sucks...*/
    backalpha = roundf((termomix.opacity_level*65535)/99);
    if (termomix.has_rgba) {
        gtk_color_button_set_use_alpha(GTK_COLOR_BUTTON(buttonback), TRUE);
        gtk_color_button_set_alpha(GTK_COLOR_BUTTON(buttonback), backalpha);
    }

    gtk_box_pack_start(GTK_BOX(hbox_fore), label1, FALSE, FALSE, 12);
    gtk_box_pack_end(GTK_BOX(hbox_fore), buttonfore, FALSE, FALSE, 12);
    gtk_box_pack_start(GTK_BOX(hbox_back), label2, FALSE, FALSE, 12);
    gtk_box_pack_end(GTK_BOX(hbox_back), buttonback, FALSE, FALSE, 12);
    gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(color_dialog))), hbox_fore, FALSE, FALSE, 6);
    gtk_box_pack_end(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(color_dialog))), hbox_back, FALSE, FALSE, 6);

    gtk_widget_show_all(gtk_dialog_get_content_area(GTK_DIALOG(color_dialog)));

    response=gtk_dialog_run(GTK_DIALOG(color_dialog));

    if (response==GTK_RESPONSE_ACCEPT) {
        /* TODO: Remove deprecated get_color */
        //gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(color_dialog), &termomix.forecolor);
        //gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(color_dialog), &termomix.backcolor);
        gtk_color_button_get_color(GTK_COLOR_BUTTON(buttonfore), &termomix.forecolor);
        gtk_color_button_get_color(GTK_COLOR_BUTTON(buttonback), &termomix.backcolor);

        if (termomix.has_rgba) {
            backalpha = gtk_color_button_get_alpha(GTK_COLOR_BUTTON(buttonback));
        }

        if (termomix.has_rgba) {
            vte_terminal_set_opacity(VTE_TERMINAL (termomix.term->vte), backalpha);
        }
        vte_terminal_set_colors(VTE_TERMINAL(termomix.term->vte), &termomix.forecolor,
                &termomix.backcolor, termomix.palette, PALETTE_SIZE);

        gchar *cfgtmp;
        cfgtmp = g_strdup_printf("#%02x%02x%02x", termomix.forecolor.red >>8,
                                 termomix.forecolor.green>>8, termomix.forecolor.blue>>8);
        termomix_set_config_string("forecolor", cfgtmp);
        g_free(cfgtmp);

        cfgtmp = g_strdup_printf("#%02x%02x%02x", termomix.backcolor.red >>8,
                                 termomix.backcolor.green>>8, termomix.backcolor.blue>>8);
        termomix_set_config_string("backcolor", cfgtmp);
        g_free(cfgtmp);

        termomix.opacity_level= roundf((backalpha*99)/65535);     /* Opacity value is between 0 and 99 */
        termomix_set_config_integer("opacity_level", termomix.opacity_level);  

    }
Beispiel #14
0
GtkWidget *main_window(){
	GtkWidget *vbox, *hpane, *vpane, *swin, *vbox2, *stage_width_entry, *stage_height_entry, *rectangle_button;
	WebKitWebView *web_view;
	ClutterActor *stage;
	ClutterColor
		stage_bg_color = { 128, 128, 128, 255 },
		white = { 255, 255, 255, 255 }
	;

	// Create widgets
	app.window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
	app.menubar = gtk_menu_bar_new();
	app.toolbar = gtk_toolbar_new();
	hpane = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL);
	vpane = gtk_paned_new(GTK_ORIENTATION_VERTICAL);
	app.statusbar = gtk_statusbar_new();
	app.stage = gtk_clutter_embed_new();
	app.notebook = gtk_notebook_new();
	web_view= WEBKIT_WEB_VIEW(webkit_web_view_new());
	swin = gtk_scrolled_window_new(NULL, NULL);
	vbox2 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
	stage_width_entry = gtk_spin_button_new_with_range(0, 9999, 1);
	stage_height_entry = gtk_spin_button_new_with_range(0, 9999, 1);
	app.colorpicker = gtk_color_button_new();
	app.fileselector = gtk_file_chooser_button_new("Background image", GTK_FILE_CHOOSER_ACTION_OPEN);
	app.background_repeat_select = gtk_combo_box_text_new();
	gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(app.background_repeat_select), "no-repeat");
	gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(app.background_repeat_select), "repeat-x");
	gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(app.background_repeat_select), "repeat-y");
	gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(app.background_repeat_select), "repeat-xy");
	stage = gtk_clutter_embed_get_stage(GTK_CLUTTER_EMBED(app.stage));
	rectangle_button = gtk_button_new_from_stock(GTK_STOCK_NEW);
	app.mainstage = clutter_rectangle_new_with_color(&white);

	// Pack widgets
	gtk_container_add(GTK_CONTAINER(app.window), vbox);

	gtk_box_pack_start(GTK_BOX(vbox), app.menubar, FALSE, FALSE, 0);
	gtk_box_pack_start(GTK_BOX(vbox), app.toolbar, FALSE, FALSE, 0);
	gtk_box_pack_start(GTK_BOX(vbox), app.notebook, TRUE, TRUE, 0);
	gtk_box_pack_start(GTK_BOX(vbox), app.statusbar, FALSE, FALSE, 0);

	gtk_notebook_append_page(GTK_NOTEBOOK(app.notebook), vpane, gtk_label_new("Animator"));
	gtk_notebook_append_page(GTK_NOTEBOOK(app.notebook), swin, gtk_label_new("Browser"));
	gtk_notebook_append_page(GTK_NOTEBOOK(app.notebook), gtk_label_new("tbc"), gtk_label_new("Source"));

	gtk_container_add(GTK_CONTAINER(swin), GTK_WIDGET(web_view));

	gtk_paned_pack1(GTK_PANED(vpane), hpane, TRUE, TRUE);
	gtk_paned_pack2(GTK_PANED(vpane), gtk_label_new("Timeline"), FALSE, TRUE);

	gtk_paned_pack1(GTK_PANED(hpane), app.stage,TRUE, TRUE);
	gtk_paned_pack2(GTK_PANED(hpane), vbox2, FALSE, TRUE);

	gtk_box_pack_start(GTK_BOX(vbox2), stage_width_entry, FALSE, FALSE, 0);
	gtk_box_pack_start(GTK_BOX(vbox2), stage_height_entry, FALSE, FALSE, 0);
	gtk_box_pack_start(GTK_BOX(vbox2), app.colorpicker, FALSE, FALSE, 0);
	gtk_box_pack_start(GTK_BOX(vbox2), app.fileselector, FALSE, FALSE, 0);
	gtk_box_pack_start(GTK_BOX(vbox2), app.background_repeat_select, FALSE, FALSE, 0);
	gtk_box_pack_start(GTK_BOX(vbox2), rectangle_button, FALSE, FALSE, 0);



	//Setup widgets
	gtk_paned_set_position(GTK_PANED(hpane), 600);
	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(swin), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
	webkit_web_view_load_uri(web_view, "http://www.webkitgtk.org/");
	gtk_widget_set_size_request(app.stage, 800, 600);
	gtk_paned_set_position(GTK_PANED(hpane), 600);
	gtk_spin_button_set_value(GTK_SPIN_BUTTON(stage_width_entry), 300);
	gtk_spin_button_set_value(GTK_SPIN_BUTTON(stage_height_entry), 200);
	g_object_set_data(G_OBJECT(stage_width_entry), "type", "width");
	g_object_set_data(G_OBJECT(stage_height_entry), "type", "height");
	clutter_stage_set_user_resizable(CLUTTER_STAGE(stage), FALSE);
	gtk_color_button_set_use_alpha(GTK_COLOR_BUTTON(app.colorpicker), TRUE);
	gtk_combo_box_set_active(GTK_COMBO_BOX(app.background_repeat_select), 0);
	clutter_actor_set_background_color(stage, &stage_bg_color);
	clutter_actor_set_size(app.mainstage, 400, 300);
	clutter_actor_set_position(app.mainstage, 100, 100);
	clutter_actor_add_child(stage, app.mainstage);
	clutter_actor_show(app.mainstage);
	clutter_actor_show(stage);

	// Connect signals
	g_signal_connect(app.fileselector, "file-set", G_CALLBACK(on_file_set), NULL);
	g_signal_connect(app.window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
	g_signal_connect(stage_width_entry, "value-changed", G_CALLBACK(on_stage_dim_changed), stage);
	g_signal_connect(stage_height_entry, "value-changed", G_CALLBACK(on_stage_dim_changed), stage);
	g_signal_connect(rectangle_button, "clicked", G_CALLBACK(on_new_button_clicked), NULL);

	return (app.window);
}
static void
on_button_config (GtkMenuItem *menuitem, gpointer user_data)
{
    GtkWidget *spectrogram_properties;
    GtkWidget *config_dialog;
    GtkWidget *vbox01;
    GtkWidget *vbox02;
    GtkWidget *hbox01;
    //GtkWidget *hbox02;
    GtkWidget *hbox03;
    GtkWidget *color_label;
    GtkWidget *color_frame;
    GtkWidget *color_gradient_00;
    GtkWidget *color_gradient_01;
    GtkWidget *color_gradient_02;
    GtkWidget *color_gradient_03;
    GtkWidget *color_gradient_04;
    GtkWidget *color_gradient_05;
    GtkWidget *color_gradient_06;
    GtkWidget *num_colors_label;
    GtkWidget *num_colors;
    GtkWidget *log_scale;
    GtkWidget *db_range_label0;
    GtkWidget *db_range;
    GtkWidget *dialog_action_area13;
    GtkWidget *applybutton1;
    GtkWidget *cancelbutton1;
    GtkWidget *okbutton1;
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
    spectrogram_properties = gtk_dialog_new ();
    gtk_window_set_title (GTK_WINDOW (spectrogram_properties), "Spectrogram Properties");
    gtk_window_set_type_hint (GTK_WINDOW (spectrogram_properties), GDK_WINDOW_TYPE_HINT_DIALOG);

    config_dialog = gtk_dialog_get_content_area (GTK_DIALOG (spectrogram_properties));
    gtk_widget_show (config_dialog);

    hbox01 = gtk_hbox_new (FALSE, 8);
    gtk_widget_show (hbox01);
    gtk_box_pack_start (GTK_BOX (config_dialog), hbox01, FALSE, FALSE, 0);
    gtk_container_set_border_width (GTK_CONTAINER (hbox01), 12);

    color_label = gtk_label_new (NULL);
    gtk_label_set_markup (GTK_LABEL (color_label),"<b>Colors</b>");
    gtk_widget_show (color_label);

    color_frame = gtk_frame_new ("Colors");
    gtk_frame_set_label_widget ((GtkFrame *)color_frame, color_label);
    gtk_frame_set_shadow_type ((GtkFrame *)color_frame, GTK_SHADOW_IN);
    gtk_widget_show (color_frame);
    gtk_box_pack_start (GTK_BOX (hbox01), color_frame, TRUE, FALSE, 0);

    vbox02 = gtk_vbox_new (FALSE, 8);
    gtk_widget_show (vbox02);
    gtk_container_add (GTK_CONTAINER (color_frame), vbox02);
    gtk_container_set_border_width (GTK_CONTAINER (vbox02), 12);

    num_colors_label = gtk_label_new (NULL);
    gtk_label_set_markup (GTK_LABEL (num_colors_label),"Number of colors:");
    gtk_widget_show (num_colors_label);
    gtk_box_pack_start (GTK_BOX (vbox02), num_colors_label, FALSE, FALSE, 0);

    num_colors = gtk_spin_button_new_with_range (1,7,1);
    gtk_widget_show (num_colors);
    gtk_box_pack_start (GTK_BOX (vbox02), num_colors, FALSE, FALSE, 0);

    color_gradient_00 = gtk_color_button_new ();
    gtk_color_button_set_use_alpha ((GtkColorButton *)color_gradient_00, TRUE);
    gtk_widget_show (color_gradient_00);
    gtk_box_pack_start (GTK_BOX (vbox02), color_gradient_00, TRUE, FALSE, 0);
    gtk_widget_set_size_request (color_gradient_00, -1, 30);

    color_gradient_01 = gtk_color_button_new ();
    gtk_color_button_set_use_alpha ((GtkColorButton *)color_gradient_01, TRUE);
    gtk_widget_show (color_gradient_01);
    gtk_box_pack_start (GTK_BOX (vbox02), color_gradient_01, TRUE, FALSE, 0);
    gtk_widget_set_size_request (color_gradient_01, -1, 30);

    color_gradient_02 = gtk_color_button_new ();
    gtk_color_button_set_use_alpha ((GtkColorButton *)color_gradient_02, TRUE);
    gtk_widget_show (color_gradient_02);
    gtk_box_pack_start (GTK_BOX (vbox02), color_gradient_02, TRUE, FALSE, 0);
    gtk_widget_set_size_request (color_gradient_02, -1, 30);

    color_gradient_03 = gtk_color_button_new ();
    gtk_color_button_set_use_alpha ((GtkColorButton *)color_gradient_03, TRUE);
    gtk_widget_show (color_gradient_03);
    gtk_box_pack_start (GTK_BOX (vbox02), color_gradient_03, TRUE, FALSE, 0);
    gtk_widget_set_size_request (color_gradient_03, -1, 30);

    color_gradient_04 = gtk_color_button_new ();
    gtk_color_button_set_use_alpha ((GtkColorButton *)color_gradient_04, TRUE);
    gtk_widget_show (color_gradient_04);
    gtk_box_pack_start (GTK_BOX (vbox02), color_gradient_04, TRUE, FALSE, 0);
    gtk_widget_set_size_request (color_gradient_04, -1, 30);

    color_gradient_05 = gtk_color_button_new ();
    gtk_color_button_set_use_alpha ((GtkColorButton *)color_gradient_05, TRUE);
    gtk_widget_show (color_gradient_05);
    gtk_box_pack_start (GTK_BOX (vbox02), color_gradient_05, TRUE, FALSE, 0);
    gtk_widget_set_size_request (color_gradient_05, -1, 30);

    color_gradient_06 = gtk_color_button_new ();
    gtk_color_button_set_use_alpha ((GtkColorButton *)color_gradient_06, TRUE);
    gtk_widget_show (color_gradient_06);
    gtk_box_pack_start (GTK_BOX (vbox02), color_gradient_06, TRUE, FALSE, 0);
    gtk_widget_set_size_request (color_gradient_06, -1, 30);

    vbox01 = gtk_vbox_new (FALSE, 8);
    gtk_widget_show (vbox01);
    gtk_box_pack_start (GTK_BOX (hbox01), vbox01, FALSE, FALSE, 0);
    gtk_container_set_border_width (GTK_CONTAINER (vbox01), 12);

    //hbox02 = gtk_hbox_new (FALSE, 8);
    //gtk_widget_show (hbox02);
    //gtk_box_pack_start (GTK_BOX (vbox01), hbox02, FALSE, FALSE, 0);
    //gtk_container_set_border_width (GTK_CONTAINER (hbox01), 12);

    hbox03 = gtk_hbox_new (FALSE, 8);
    gtk_widget_show (hbox03);
    gtk_box_pack_start (GTK_BOX (vbox01), hbox03, FALSE, FALSE, 0);

    db_range_label0 = gtk_label_new (NULL);
    gtk_label_set_markup (GTK_LABEL (db_range_label0),"dB range:");
    gtk_widget_show (db_range_label0);
    gtk_box_pack_start (GTK_BOX (hbox03), db_range_label0, FALSE, TRUE, 0);

    db_range = gtk_spin_button_new_with_range (50,120,10);
    gtk_widget_show (db_range);
    gtk_box_pack_start (GTK_BOX (hbox03), db_range, TRUE, TRUE, 0);

    log_scale = gtk_check_button_new_with_label ("Log scale");
    gtk_widget_show (log_scale);
    gtk_box_pack_start (GTK_BOX (vbox01), log_scale, FALSE, FALSE, 0);

    dialog_action_area13 = gtk_dialog_get_action_area (GTK_DIALOG (spectrogram_properties));
    gtk_widget_show (dialog_action_area13);
    gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area13), GTK_BUTTONBOX_END);

    applybutton1 = gtk_button_new_from_stock ("gtk-apply");
    gtk_widget_show (applybutton1);
    gtk_dialog_add_action_widget (GTK_DIALOG (spectrogram_properties), applybutton1, GTK_RESPONSE_APPLY);
    gtk_widget_set_can_default (applybutton1, TRUE);

    cancelbutton1 = gtk_button_new_from_stock ("gtk-cancel");
    gtk_widget_show (cancelbutton1);
    gtk_dialog_add_action_widget (GTK_DIALOG (spectrogram_properties), cancelbutton1, GTK_RESPONSE_CANCEL);
    gtk_widget_set_can_default (cancelbutton1, TRUE);

    okbutton1 = gtk_button_new_from_stock ("gtk-ok");
    gtk_widget_show (okbutton1);
    gtk_dialog_add_action_widget (GTK_DIALOG (spectrogram_properties), okbutton1, GTK_RESPONSE_OK);
    gtk_widget_set_can_default (okbutton1, TRUE);

    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (log_scale), CONFIG_LOG_SCALE);
    gtk_spin_button_set_value (GTK_SPIN_BUTTON (num_colors), CONFIG_NUM_COLORS);
    gtk_spin_button_set_value (GTK_SPIN_BUTTON (db_range), CONFIG_DB_RANGE);
    gtk_color_button_set_color (GTK_COLOR_BUTTON (color_gradient_00), &(CONFIG_GRADIENT_COLORS[0]));
    gtk_color_button_set_color (GTK_COLOR_BUTTON (color_gradient_01), &(CONFIG_GRADIENT_COLORS[1]));
    gtk_color_button_set_color (GTK_COLOR_BUTTON (color_gradient_02), &(CONFIG_GRADIENT_COLORS[2]));
    gtk_color_button_set_color (GTK_COLOR_BUTTON (color_gradient_03), &(CONFIG_GRADIENT_COLORS[3]));
    gtk_color_button_set_color (GTK_COLOR_BUTTON (color_gradient_04), &(CONFIG_GRADIENT_COLORS[4]));
    gtk_color_button_set_color (GTK_COLOR_BUTTON (color_gradient_05), &(CONFIG_GRADIENT_COLORS[5]));
    gtk_color_button_set_color (GTK_COLOR_BUTTON (color_gradient_06), &(CONFIG_GRADIENT_COLORS[6]));

    switch (CONFIG_NUM_COLORS) {
        case 1:
            gtk_widget_hide (color_gradient_01);
            gtk_widget_hide (color_gradient_02);
            gtk_widget_hide (color_gradient_03);
            gtk_widget_hide (color_gradient_04);
            gtk_widget_hide (color_gradient_05);
            gtk_widget_hide (color_gradient_06);
            break;
        case 2:
            gtk_widget_show (color_gradient_01);
            gtk_widget_hide (color_gradient_02);
            gtk_widget_hide (color_gradient_03);
            gtk_widget_hide (color_gradient_04);
            gtk_widget_hide (color_gradient_05);
            gtk_widget_hide (color_gradient_06);
            break;
        case 3:
            gtk_widget_show (color_gradient_01);
            gtk_widget_show (color_gradient_02);
            gtk_widget_hide (color_gradient_03);
            gtk_widget_hide (color_gradient_04);
            gtk_widget_hide (color_gradient_05);
            gtk_widget_hide (color_gradient_06);
            break;
        case 4:
            gtk_widget_show (color_gradient_01);
            gtk_widget_show (color_gradient_02);
            gtk_widget_show (color_gradient_03);
            gtk_widget_hide (color_gradient_04);
            gtk_widget_hide (color_gradient_05);
            gtk_widget_hide (color_gradient_06);
            break;
        case 5:
            gtk_widget_show (color_gradient_01);
            gtk_widget_show (color_gradient_02);
            gtk_widget_show (color_gradient_03);
            gtk_widget_show (color_gradient_04);
            gtk_widget_hide (color_gradient_05);
            gtk_widget_hide (color_gradient_06);
            break;
        case 6:
            gtk_widget_show (color_gradient_01);
            gtk_widget_show (color_gradient_02);
            gtk_widget_show (color_gradient_03);
            gtk_widget_show (color_gradient_04);
            gtk_widget_show (color_gradient_05);
            gtk_widget_hide (color_gradient_06);
            break;
        case 7:
            gtk_widget_show (color_gradient_01);
            gtk_widget_show (color_gradient_02);
            gtk_widget_show (color_gradient_03);
            gtk_widget_show (color_gradient_04);
            gtk_widget_show (color_gradient_05);
            gtk_widget_show (color_gradient_06);
            break;
    }

    for (;;) {
        int response = gtk_dialog_run (GTK_DIALOG (spectrogram_properties));
        if (response == GTK_RESPONSE_OK || response == GTK_RESPONSE_APPLY) {
            gtk_color_button_get_color (GTK_COLOR_BUTTON (color_gradient_00), &CONFIG_GRADIENT_COLORS[0]);
            gtk_color_button_get_color (GTK_COLOR_BUTTON (color_gradient_01), &CONFIG_GRADIENT_COLORS[1]);
            gtk_color_button_get_color (GTK_COLOR_BUTTON (color_gradient_02), &CONFIG_GRADIENT_COLORS[2]);
            gtk_color_button_get_color (GTK_COLOR_BUTTON (color_gradient_03), &CONFIG_GRADIENT_COLORS[3]);
            gtk_color_button_get_color (GTK_COLOR_BUTTON (color_gradient_04), &CONFIG_GRADIENT_COLORS[4]);
            gtk_color_button_get_color (GTK_COLOR_BUTTON (color_gradient_05), &CONFIG_GRADIENT_COLORS[5]);
            gtk_color_button_get_color (GTK_COLOR_BUTTON (color_gradient_06), &CONFIG_GRADIENT_COLORS[6]);

            CONFIG_LOG_SCALE = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (log_scale));
            CONFIG_DB_RANGE = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (db_range));
            CONFIG_NUM_COLORS = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (num_colors));
            switch (CONFIG_NUM_COLORS) {
                case 1:
                    gtk_widget_hide (color_gradient_01);
                    gtk_widget_hide (color_gradient_02);
                    gtk_widget_hide (color_gradient_03);
                    gtk_widget_hide (color_gradient_04);
                    gtk_widget_hide (color_gradient_05);
                    gtk_widget_hide (color_gradient_06);
                    break;
                case 2:
                    gtk_widget_show (color_gradient_01);
                    gtk_widget_hide (color_gradient_02);
                    gtk_widget_hide (color_gradient_03);
                    gtk_widget_hide (color_gradient_04);
                    gtk_widget_hide (color_gradient_05);
                    gtk_widget_hide (color_gradient_06);
                    break;
                case 3:
                    gtk_widget_show (color_gradient_01);
                    gtk_widget_show (color_gradient_02);
                    gtk_widget_hide (color_gradient_03);
                    gtk_widget_hide (color_gradient_04);
                    gtk_widget_hide (color_gradient_05);
                    gtk_widget_hide (color_gradient_06);
                    break;
                case 4:
                    gtk_widget_show (color_gradient_01);
                    gtk_widget_show (color_gradient_02);
                    gtk_widget_show (color_gradient_03);
                    gtk_widget_hide (color_gradient_04);
                    gtk_widget_hide (color_gradient_05);
                    gtk_widget_hide (color_gradient_06);
                    break;
                case 5:
                    gtk_widget_show (color_gradient_01);
                    gtk_widget_show (color_gradient_02);
                    gtk_widget_show (color_gradient_03);
                    gtk_widget_show (color_gradient_04);
                    gtk_widget_hide (color_gradient_05);
                    gtk_widget_hide (color_gradient_06);
                    break;
                case 6:
                    gtk_widget_show (color_gradient_01);
                    gtk_widget_show (color_gradient_02);
                    gtk_widget_show (color_gradient_03);
                    gtk_widget_show (color_gradient_04);
                    gtk_widget_show (color_gradient_05);
                    gtk_widget_hide (color_gradient_06);
                    break;
                case 7:
                    gtk_widget_show (color_gradient_01);
                    gtk_widget_show (color_gradient_02);
                    gtk_widget_show (color_gradient_03);
                    gtk_widget_show (color_gradient_04);
                    gtk_widget_show (color_gradient_05);
                    gtk_widget_show (color_gradient_06);
                    break;
            }
            save_config ();
            deadbeef->sendmessage (DB_EV_CONFIGCHANGED, 0, 0, 0);
        }
        if (response == GTK_RESPONSE_APPLY) {
            continue;
        }
        break;
    }
    gtk_widget_destroy (spectrogram_properties);
#pragma GCC diagnostic pop
    return;
}