Example #1
0
static void
profile_colors_notify_scheme_combo_cb (TerminalProfile *profile,
                                       GParamSpec *pspec,
                                       GtkComboBox *combo)
{
	const GdkColor *fg, *bg;
	guint i;

	fg = terminal_profile_get_property_boxed (profile, TERMINAL_PROFILE_FOREGROUND_COLOR);
	bg = terminal_profile_get_property_boxed (profile, TERMINAL_PROFILE_BACKGROUND_COLOR);

	if (fg && bg)
	{
		for (i = 0; i < G_N_ELEMENTS (color_schemes); ++i)
		{
			if (gdk_color_equal (fg, &color_schemes[i].foreground) &&
			        gdk_color_equal (bg, &color_schemes[i].background))
				break;
		}
	}
	else
	{
		i = G_N_ELEMENTS (color_schemes);
	}
	/* If we didn't find a match, then we get the last combo box item which is "custom" */

	g_signal_handlers_block_by_func (combo, G_CALLBACK (color_scheme_combo_changed_cb), profile);
	gtk_combo_box_set_active (GTK_COMBO_BOX (combo), i);
	g_signal_handlers_unblock_by_func (combo, G_CALLBACK (color_scheme_combo_changed_cb), profile);
}
Example #2
0
static void
profile_palette_notify_colorpickers_cb (TerminalProfile *profile,
                                        GParamSpec *pspec,
                                        GtkWidget *editor)
{
	GtkWidget *w;
	GdkColor colors[TERMINAL_PALETTE_SIZE];
	guint n_colors, i;

	n_colors = G_N_ELEMENTS (colors);
	terminal_profile_get_palette (profile, colors, &n_colors);

	n_colors = MIN (n_colors, TERMINAL_PALETTE_SIZE);
	for (i = 0; i < n_colors; i++)
	{
		char name[32];
		GdkColor old_color;

		g_snprintf (name, sizeof (name), "palette-colorpicker-%d", i + 1);
		w = profile_editor_get_widget (editor, name);

		gtk_color_button_get_color (GTK_COLOR_BUTTON (w), &old_color);
		if (!gdk_color_equal (&old_color, &colors[i]))
		{
			g_signal_handlers_block_by_func (w, G_CALLBACK (palette_color_notify_cb), profile);
			gtk_color_button_set_color (GTK_COLOR_BUTTON (w), &colors[i]);
			g_signal_handlers_unblock_by_func (w, G_CALLBACK (palette_color_notify_cb), profile);
		}
	}
}
gboolean
terminal_profile_modify_palette_entry (TerminalProfile *profile,
                                       guint            i,
                                       const GdkColor  *color)
{
	TerminalProfilePrivate *priv = profile->priv;
	GValueArray *array;
	GValue *value;
	GdkColor *old_color;

	array = g_value_get_boxed (g_value_array_get_nth (priv->properties, PROP_PALETTE));
	if (!array ||
	        i >= array->n_values)
		return FALSE;

	value = g_value_array_get_nth (array, i);
	old_color = g_value_get_boxed (value);
	if (!old_color ||
	        !gdk_color_equal (old_color, color))
	{
		g_value_set_boxed (value, color);
		g_object_notify (G_OBJECT (profile), TERMINAL_PROFILE_PALETTE);
	}

	return TRUE;
}
Example #4
0
void
vkb_button_set_bg(GtkWidget *widget, GtkStateType state, const GdkColor *color)
{
	GtkVkbButton *button;
	GdkColormap *colormap;

	g_return_if_fail(GTK_IS_VKB_BUTTON(widget));
	g_return_if_fail(state >= GTK_STATE_NORMAL && state <= GTK_STATE_INSENSITIVE);

	button = GTK_VKB_BUTTON(widget);

	colormap = gtk_widget_get_colormap(GTK_WIDGET(button));

	if (button->bgcolor[state].pixel != 0) {
		if (gdk_color_equal(&button->bgcolor[state], color))
			goto done;
		gdk_colormap_free_colors(colormap, &button->bgcolor[state], 1);
	}

	button->bgcolor[state] = *color;
	button->bgcolor[state].pixel = 0;
	gdk_colormap_alloc_color(colormap, &button->bgcolor[state], FALSE, TRUE);
done:
	return;
}
Example #5
0
static int
gtk_color_instance_equal (struct Lisp_Color_Instance *c1,
			  struct Lisp_Color_Instance *c2,
			  int depth)
{
    return (gdk_color_equal (COLOR_INSTANCE_GTK_COLOR (c1),
			     COLOR_INSTANCE_GTK_COLOR (c2)));
}
static int
values_equal (GParamSpec *pspec,
              const GValue *va,
              const GValue *vb)
{
	/* g_param_values_cmp isn't good enough for some types, since e.g.
	 * it compares colours and font descriptions by pointer value, not
	 * with the correct compare functions. Providing extra
	 * PangoParamSpecFontDescription and GdkParamSpecColor wouldn't
	 * have fixed this either, since it's unclear how to _order_ them.
	 * Luckily we only need to check them for equality here.
	 */

	if (g_param_values_cmp (pspec, va, vb) == 0)
		return TRUE;

	if (G_PARAM_SPEC_VALUE_TYPE (pspec) == GDK_TYPE_COLOR)
		return gdk_color_equal (g_value_get_boxed (va), g_value_get_boxed (vb));

	if (G_PARAM_SPEC_VALUE_TYPE (pspec) == PANGO_TYPE_FONT_DESCRIPTION)
		return pango_font_description_equal (g_value_get_boxed (va), g_value_get_boxed (vb));

	if (G_IS_PARAM_SPEC_VALUE_ARRAY (pspec) &&
	        G_PARAM_SPEC_VALUE_TYPE (G_PARAM_SPEC_VALUE_ARRAY (pspec)->element_spec) == GDK_TYPE_COLOR)
	{
		GValueArray *ara, *arb;
		guint i;

		ara = g_value_get_boxed (va);
		arb = g_value_get_boxed (vb);

		if (!ara || !arb || ara->n_values != arb->n_values)
			return FALSE;

		for (i = 0; i < ara->n_values; ++i)
			if (!gdk_color_equal (g_value_get_boxed (g_value_array_get_nth (ara, i)),
			                      g_value_get_boxed (g_value_array_get_nth (arb, i))))
				return FALSE;

		return TRUE;
	}

	return FALSE;
}
Example #7
0
gboolean
html_color_equal (HTMLColor *color1, HTMLColor *color2)
{
	if (color1 == color2)
		return TRUE;
	if (!color1 || !color2)
		return FALSE;

	return gdk_color_equal (&color1->color, &color2->color);
}
Example #8
0
static gint
filter_color_eq (EFilterElement *element_a,
                 EFilterElement *element_b)
{
    EFilterColor *color_a = E_FILTER_COLOR (element_a);
    EFilterColor *color_b = E_FILTER_COLOR (element_b);

    return E_FILTER_ELEMENT_CLASS (e_filter_color_parent_class)->
           eq (element_a, element_b) &&
           gdk_color_equal (&color_a->color, &color_b->color);
}
static gboolean
palette_cmp (const GdkColor *ca,
             const GdkColor *cb)
{
	guint i;

	for (i = 0; i < TERMINAL_PALETTE_SIZE; ++i)
		if (!gdk_color_equal (&ca[i], &cb[i]))
			return FALSE;

	return TRUE;
}
void
na_tray_manager_set_colors (NaTrayManager *manager,
                            GdkColor      *fg,
                            GdkColor      *error,
                            GdkColor      *warning,
                            GdkColor      *success)
{
  g_return_if_fail (NA_IS_TRAY_MANAGER (manager));

  if (!gdk_color_equal (&manager->fg, fg) ||
      !gdk_color_equal (&manager->error, error) ||
      !gdk_color_equal (&manager->warning, warning) ||
      !gdk_color_equal (&manager->success, success))
    {
      manager->fg = *fg;
      manager->error = *error;
      manager->warning = *warning;
      manager->success = *success;

      na_tray_manager_set_colors_property (manager);
    }
}
void matenu_menu_bar_set_background (MatenuMenuBar* self, MatenuBackground* value) {
	MatenuBackgroundType old_type;
	GdkColor old_color;
	GdkPixmap* _tmp0_;
	g_return_if_fail (self != NULL);
	old_type = self->priv->_background->type;
	old_color = self->priv->_background->color;
	self->priv->_background->type = value->type;
	self->priv->_background->pixmap = (_tmp0_ = _g_object_ref0 (value->pixmap), _g_object_unref0 (self->priv->_background->pixmap), _tmp0_);
	self->priv->_background->color = value->color;
	self->priv->_background->offset_x = value->offset_x;
	self->priv->_background->offset_y = value->offset_y;
	switch (self->priv->_background->type) {
		case MATENU_BACKGROUND_TYPE_NONE:
		{
			if (old_type != self->priv->_background->type) {
				GtkRcStyle* rc_style;
				gtk_widget_set_style ((GtkWidget*) self, NULL);
				rc_style = gtk_rc_style_new ();
				gtk_widget_modify_style ((GtkWidget*) self, rc_style);
				_g_object_unref0 (rc_style);
			}
			break;
		}
		case MATENU_BACKGROUND_TYPE_COLOR:
		{
			gboolean _tmp1_ = FALSE;
			if (old_type != self->priv->_background->type) {
				_tmp1_ = TRUE;
			} else {
				gboolean _tmp2_ = FALSE;
				if (old_type == self->priv->_background->type) {
					_tmp2_ = !gdk_color_equal (&old_color, &self->priv->_background->color);
				} else {
					_tmp2_ = FALSE;
				}
				_tmp1_ = _tmp2_;
			}
			if (_tmp1_) {
				gtk_widget_modify_bg ((GtkWidget*) self, GTK_STATE_NORMAL, &self->priv->_background->color);
			}
			break;
		}
		case MATENU_BACKGROUND_TYPE_PIXMAP:
		{
			matenu_menu_bar_reset_bg_pixmap (self);
			break;
		}
	}
	g_object_notify ((GObject *) self, "background");
}
Example #12
0
gboolean msgwin_goto_compiler_file_line(gboolean focus_editor)
{
	GtkTreeIter iter;
	GtkTreeModel *model;
	GtkTreeSelection *selection;
	gchar *string;
	GdkColor *color;

	selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(msgwindow.tree_compiler));
	if (gtk_tree_selection_get_selected(selection, &model, &iter))
	{
		/* if the item is not coloured red, it's not an error line */
		gtk_tree_model_get(model, &iter, COMPILER_COL_COLOR, &color, -1);
		if (color == NULL || ! gdk_color_equal(color, &color_error))
		{
			if (color != NULL)
				gdk_color_free(color);
			return FALSE;
		}
		gdk_color_free(color);

		gtk_tree_model_get(model, &iter, COMPILER_COL_STRING, &string, -1);
		if (string != NULL)
		{
			gint line;
			gchar *filename, *dir;
			GtkTreePath *path;
			gboolean ret;

			path = gtk_tree_model_get_path(model, &iter);
			find_prev_build_dir(path, model, &dir);
			gtk_tree_path_free(path);
			msgwin_parse_compiler_error_line(string, dir, &filename, &line);
			g_free(string);
			g_free(dir);

			ret = goto_compiler_file_line(filename, line, focus_editor);
			g_free(filename);
			return ret;
		}
	}
	return FALSE;
}
Example #13
0
void
gtk_color_combo_find_color(GtkColorCombo *color_combo,
                           GdkColor *color, gint *row, gint *col)
{
   GdkColor combo_color;
   gchar *name;
   gint i, j;
   gdouble dist = 114000.0;
   gdouble d, dr, dg, db;

   *row = -1;
   *col = -1;

   for(i = 0; i < color_combo->nrows; i++){ 
     for(j = 0; j < color_combo->ncols; j++){ 
        name = gtk_color_combo_get_color_at(color_combo, i, j);
        gdk_color_parse(name, &combo_color);


        if(gdk_color_equal(color, &combo_color)){
                   *row = i;
                   *col = j;
                   return;
        }
       
        dr = fabs(color->red - combo_color.red); 
        dg = fabs(color->green - combo_color.green);  
        db = fabs(color->blue - combo_color.blue); 

        d = dr + dg + db;
/*
        printf("%d %d %d // %d %d %d\n",color->red,color->green,color->blue,combo_color.red,combo_color.green,combo_color.blue);
        printf("%f\n",d);
*/

        if(d < dist){
            dist = d;
            *row = i; 
            *col = j; 
        }
     }
   }
} 
Example #14
0
File: prefs.c Project: phako/ignuit
void
prefs_set_color_gdk (Prefs *p, Color which, GdkColor *color)
{
    gboolean changed = FALSE;

    if (p->color[which]) {
        changed = !gdk_color_equal (color, p->color[which]);
        gdk_color_free (p->color[which]);
    }

    p->color[which] = gdk_color_copy (color);

    if (changed) {

        gchar *spec;

        spec = prefs_colors_to_csvstr (p);
        gconf_client_set_string (p->gconf_client, PREF_CARD_COLORS, spec, NULL);
        g_free (spec);
    }
}
Example #15
0
static int restore_values (void)
{
	int ret = 0;
	if (desktop_font != orig_desktop_font)
	{
		desktop_font = orig_desktop_font;
		ret = 1;
	}
	if (desktop_picture != orig_desktop_picture)
	{
		desktop_picture = orig_desktop_picture;
		ret = 1;
	}
	if (desktop_mode != orig_desktop_mode)
	{
		desktop_mode = orig_desktop_mode;
		ret = 1;
	}
	if (icon_size != orig_icon_size)
	{
		icon_size = orig_icon_size;
		ret = 1;
	}
	if (!gdk_color_equal (&theme_colour, &orig_theme_colour))
	{
		theme_colour = orig_theme_colour;
		ret = 1;
	}
	if (!gdk_color_equal (&themetext_colour, &orig_themetext_colour))
	{
		themetext_colour = orig_themetext_colour;
		ret = 1;
	}
	if (!gdk_color_equal (&desktop_colour, &orig_desktop_colour))
	{
		desktop_colour = orig_desktop_colour;
		ret = 1;
	}
	if (!gdk_color_equal (&desktoptext_colour, &orig_desktoptext_colour))
	{
		desktoptext_colour = orig_desktoptext_colour;
		ret = 1;
	}
	if (!gdk_color_equal (&bar_colour, &orig_bar_colour))
	{
		bar_colour = orig_bar_colour;
		ret = 1;
	}
	if (!gdk_color_equal (&bartext_colour, &orig_bartext_colour))
	{
		bartext_colour = orig_bartext_colour;
		ret = 1;
	}
	if (barpos != orig_barpos)
	{
		barpos = orig_barpos;
		ret = 1;
	}
	if (strcmp ("PiX", orig_lxsession_theme))
	{
		set_lxsession_theme (orig_lxsession_theme);
		ret = 1;
	}
	if (strcmp ("PiX", orig_openbox_theme))
	{
		set_openbox_theme (orig_openbox_theme);
		ret = 1;
	}
	if (show_docs != orig_show_docs)
	{
		show_docs = orig_show_docs;
		ret = 1;
	}
	if (show_trash != orig_show_trash)
	{
		show_trash = orig_show_trash;
		ret = 1;
	}
	if (show_mnts != orig_show_mnts)
	{
		show_mnts = orig_show_mnts;
		ret = 1;
	}
	return ret;
}
Example #16
0
static void header_label_style_set(GtkWidget *widget)
{
	GtkStyle *style = gtk_widget_get_style(widget);
	if (! gdk_color_equal(&style->fg[GTK_STATE_NORMAL], &style->fg[GTK_STATE_SELECTED]))
		gtk_widget_modify_fg(widget, GTK_STATE_NORMAL, &style->fg[GTK_STATE_SELECTED]);
}
Example #17
0
static void
gtk_text_render_state_update (GtkTextRenderState *state,
                              GtkTextAppearance  *new_appearance)
{
  GdkScreen *screen = gtk_widget_get_screen (state->widget);
  
  if (!state->last_appearance ||
      !gdk_color_equal (&new_appearance->fg_color, &state->last_appearance->fg_color))
    gtk_text_render_state_set_color (state, state->fg_gc, &new_appearance->fg_color);

  if (!state->last_appearance ||
      new_appearance->fg_stipple != state->last_appearance->fg_stipple)
    {
      if (new_appearance->fg_stipple)
        {
	  if (screen == gdk_drawable_get_screen (new_appearance->fg_stipple))
	    {
	      gdk_gc_set_fill (state->fg_gc, GDK_STIPPLED);
	      gdk_gc_set_stipple (state->fg_gc, new_appearance->fg_stipple);
	    }
	  else
	    g_warning ("gtk_text_render_state_update:\n"
		       "The foreground stipple bitmap has been created on the wrong screen.\n"
		       "Ignoring the stipple bitmap information.");
        }
      else
        {
          gdk_gc_set_fill (state->fg_gc, GDK_SOLID);
        }
    }

  if (new_appearance->draw_bg)
    {
      if (!state->last_bg_appearance ||
          !gdk_color_equal (&new_appearance->bg_color, &state->last_bg_appearance->bg_color))
        gtk_text_render_state_set_color (state, state->bg_gc, &new_appearance->bg_color);

      if (!state->last_bg_appearance ||
          new_appearance->bg_stipple != state->last_bg_appearance->bg_stipple)
        {
          if (new_appearance->bg_stipple)
            {
	      if (screen == gdk_drawable_get_screen (new_appearance->bg_stipple))
		{
		  gdk_gc_set_fill (state->bg_gc, GDK_STIPPLED);
		  gdk_gc_set_stipple (state->bg_gc, new_appearance->bg_stipple);
		}
	      else
		g_warning ("gtk_text_render_state_update:\n"
			   "The background stipple bitmap has been created on the wrong screen.\n"
			   "Ignoring the stipple bitmap information.");

            }
          else
            {
              gdk_gc_set_fill (state->bg_gc, GDK_SOLID);
            }
        }

      state->last_bg_appearance = new_appearance;
    }

  state->last_appearance = new_appearance;
}