Commit a1c6e6c2 authored by Victor Ananjesky's avatar Victor Ananjesky

some color changes

parent 86bfc4c9
......@@ -268,17 +268,14 @@ is a string with date details, which may include Pango markup.
Set initial color value.
.TP
.B \-\-gtk-palette
Show system palette inside color dialog.
.TP
.B \-\-extra
Show extra information about color in returned string.
Show system palette inside color dialog. For GTK+3 builds this option shows palette instead of color editor.
.TP
.B \-\-alpha
Add opacity to output color string.
.TP
.B \-\-palette=\fI[FILENAME]\fP
Show palette and set predefined colors from given filename.
By default used \fI/etc/X11/rgb.txt\fP.
By default yad use file \fI/etc/X11/rgb.txt\fP.
.TP
.B \-\-expand-palette
Expander for list of user-defined colors will be initially opened.
......
......@@ -96,6 +96,20 @@ create_palette ()
}
static void
set_color (gchar *clr)
{
#if !GTK_CHECK_VERSION(3,0,0)
GdkColor c;
if (gdk_color_parse (clr, &c))
gtk_color_selection_set_current_color (GTK_COLOR_SELECTION (color), &c);
#else
GdkRGBA c;
if (gdk_rgba_parse (&c, clr))
gtk_color_chooser_set_rgba (GTK_COLOR_CHOOSER (color), &c);
#endif
}
static void
palette_changed (GtkTreeSelection * sel, gpointer data)
{
GtkTreeModel *model;
......@@ -104,11 +118,8 @@ palette_changed (GtkTreeSelection * sel, gpointer data)
if (gtk_tree_selection_get_selected (sel, &model, &iter))
{
gchar *clr;
GdkColor c;
gtk_tree_model_get (model, &iter, 1, &clr, -1);
if (gdk_color_parse (clr, &c))
gtk_color_selection_set_current_color (GTK_COLOR_SELECTION (color), &c);
set_color (clr);
}
}
......@@ -119,20 +130,20 @@ color_create_widget (GtkWidget * dlg)
#if !GTK_CHECK_VERSION(3,0,0)
w = gtk_vbox_new (FALSE, 2);
color = gtk_color_selection_new ();
#else
w = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
color = gtk_color_chooser_widget_new ();
#endif
color = gtk_color_selection_new ();
gtk_widget_set_name (color, "yad-color-widget");
#if !GTK_CHECK_VERSION(3,0,0)
gtk_color_selection_set_has_palette (GTK_COLOR_SELECTION (color), options.color_data.gtk_palette);
#else
g_object_set (G_OBJECT (color), "show-editor", !options.color_data.gtk_palette, NULL);
#endif
if (options.color_data.init_color)
{
GdkColor c;
if (gdk_color_parse (options.color_data.init_color, &c))
gtk_color_selection_set_current_color (GTK_COLOR_SELECTION (color), &c);
}
set_color (options.color_data.init_color);
gtk_box_pack_start (GTK_BOX (w), color, FALSE, FALSE, 2);
if (options.color_data.use_palette)
......@@ -158,7 +169,9 @@ color_create_widget (GtkWidget * dlg)
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), options.hscroll_policy, options.vscroll_policy);
gtk_widget_set_size_request (sw, -1, 75);
gtk_container_add (GTK_CONTAINER (exp), sw);
#if GTK_CHECK_VERSION(3,0,0)
gtk_widget_set_vexpand (sw, TRUE);
#endif
list = gtk_tree_view_new_with_model (model);
gtk_widget_set_name (list, "yad-color-palette");
g_object_unref (model);
......@@ -205,14 +218,22 @@ color_create_widget (GtkWidget * dlg)
void
color_print_result (void)
{
#if !GTK_CHECK_VERSION(3,0,0)
GdkColor c;
guint64 alpha;
#else
GdkRGBA c;
#endif
gchar *cs;
#if !GTK_CHECK_VERSION(3,0,0)
gtk_color_selection_get_current_color (GTK_COLOR_SELECTION (color), &c);
alpha = gtk_color_selection_get_current_alpha (GTK_COLOR_SELECTION (color));
cs = get_color (&c, alpha);
#else
gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (color), &c);
cs = get_color (&c);
#endif
if (cs)
g_printf ("%s\n", cs);
......
......@@ -257,8 +257,6 @@ static GOptionEntry color_options[] = {
N_("Expand user palette"), NULL },
{ "mode", 0, 0, G_OPTION_ARG_CALLBACK, set_color_mode,
N_("Set output mode to MODE. Values are hex (default) or rgb"), N_("MODE") },
{ "extra", 0, 0, G_OPTION_ARG_NONE, &options.color_data.extra,
N_("Use #rrrrggggbbbb format instead of #rrggbb"), NULL },
{ "alpha", 0, 0, G_OPTION_ARG_NONE, &options.color_data.alpha,
N_("Add opacity to output color value"), NULL },
{ NULL }
......
......@@ -188,31 +188,19 @@ get_pixbuf (gchar * name, YadIconSize size)
return pb;
}
#if !GTK_CHECK_VERSION(3,0,0)
gchar *
get_color (GdkColor *c, guint64 alpha)
{
gchar *cs;
gchar *res = NULL;
switch (options.color_data.mode)
{
case YAD_COLOR_HEX:
cs = gdk_color_to_string (c);
if (options.color_data.alpha)
{
if (options.color_data.extra)
res = g_strdup_printf ("#%s%hx", cs + 1, alpha);
else
res = g_strdup_printf ("#%c%c%c%c%c%c%hx", cs[1], cs[2], cs[5], cs[6], cs[9], cs[10], alpha / 256);
}
res = g_strdup_printf ("#%hXhXhXhX", c->red, c->green, c->blue, alpha / 256);
else
{
if (options.color_data.extra)
res = g_strdup_printf ("%s", cs);
else
res = g_strdup_printf ("#%c%c%c%c%c%c", cs[1], cs[2], cs[5], cs[6], cs[9], cs[10]);
}
g_free (cs);
res = g_strdup_printf ("#%hXhXhX", c->red, c->green, c->blue);
break;
case YAD_COLOR_RGB:
if (options.color_data.alpha)
......@@ -226,6 +214,27 @@ get_color (GdkColor *c, guint64 alpha)
return res;
}
#else
gchar *
get_color (GdkRGBA *c)
{
gchar *res = NULL;
switch (options.color_data.mode)
{
case YAD_COLOR_HEX:
if (options.color_data.alpha)
res = g_strdup_printf ("#%hXhXhXhX", c->red * 255, c->green * 255, c->blue * 255, c->alpha * 255);
else
res = g_strdup_printf ("#%hXhXhX", c->red * 255, c->green * 255, c->blue * 255);
break;
case YAD_COLOR_RGB:
res = gdk_rgba_to_string (c);
break;
}
return res;
}
#endif
void
update_preview (GtkFileChooser * chooser, GtkWidget *p)
......
......@@ -253,7 +253,6 @@ typedef struct {
gboolean use_palette;
gboolean expand_palette;
gchar *palette;
gboolean extra;
gboolean alpha;
YadColorMode mode;
} YadColorData;
......@@ -613,7 +612,11 @@ void update_preview (GtkFileChooser *chooser, GtkWidget *p);
void filechooser_mapped (GtkWidget *w, gpointer data);
GdkPixbuf *get_pixbuf (gchar *name, YadIconSize size);
#if GTK_CHECK_VERSION(3,0,0)
gchar *get_color (GdkRGBA *c);
#else
gchar *get_color (GdkColor *c, guint64 alpha);
#endif
gchar **split_arg (const gchar *str);
......@@ -626,8 +629,13 @@ gchar *escape_char (gchar *str, gchar ch);
gboolean check_complete (GtkEntryCompletion *c, const gchar *key, GtkTreeIter *iter, gpointer data);
#ifdef HAVE_SPELL
void show_langs ();
#endif
#ifdef HAVE_SOURCEVIEW
void show_themes ();
#endif
static inline void
strip_new_line (gchar * str)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment