[eog] Allow setting a user-defined background color
- From: Felix Riemann <friemann src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [eog] Allow setting a user-defined background color
- Date: Sun, 6 Jun 2010 20:12:30 +0000 (UTC)
commit caf81e8f9e27419dd8ec96ebaaf616b669e04977
Author: Felix Riemann <friemann gnome org>
Date: Sun Jun 6 22:07:08 2010 +0200
Allow setting a user-defined background color
This allows the user to have another color instead of the theme defined
color as background. For now requires a loaded image until we can
finally fix bug 538279. Fixes bug 502992.
data/eog-preferences-dialog.ui | 595 ++++++++++++----------------------
data/org.gnome.eog.gschema.xml.in.in | 10 +
src/eog-config-keys.h | 2 +
src/eog-preferences-dialog.c | 15 +-
src/eog-scroll-view.c | 93 +++++-
src/eog-scroll-view.h | 2 +-
6 files changed, 316 insertions(+), 401 deletions(-)
---
diff --git a/data/eog-preferences-dialog.ui b/data/eog-preferences-dialog.ui
index 1e267ea..6569f69 100644
--- a/data/eog-preferences-dialog.ui
+++ b/data/eog-preferences-dialog.ui
@@ -1,835 +1,638 @@
-<?xml version="1.0"?>
-<!--*- mode: xml -*-->
+<?xml version="1.0" encoding="UTF-8"?>
<interface>
+ <requires lib="gtk+" version="2.20"/>
+ <!-- interface-naming-policy toplevel-contextual -->
<object class="GtkAdjustment" id="adjustment1">
- <property name="upper">100</property>
<property name="lower">1</property>
- <property name="page_increment">10</property>
- <property name="step_increment">1</property>
- <property name="page_size">0</property>
+ <property name="upper">100</property>
<property name="value">5</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">10</property>
</object>
<object class="GtkDialog" id="eog_preferences_dialog">
<property name="border_width">5</property>
<property name="title" translatable="yes">Eye of GNOME Preferences</property>
- <property name="type">GTK_WINDOW_TOPLEVEL</property>
- <property name="window_position">GTK_WIN_POS_NONE</property>
- <property name="modal">False</property>
- <property name="resizable">True</property>
- <property name="destroy_with_parent">False</property>
- <property name="decorated">True</property>
- <property name="skip_taskbar_hint">False</property>
- <property name="skip_pager_hint">False</property>
- <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
- <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
- <property name="focus_on_map">True</property>
- <property name="urgency_hint">False</property>
+ <property name="type_hint">dialog</property>
<property name="has_separator">False</property>
<child internal-child="vbox">
<object class="GtkVBox" id="dialog-vbox1">
<property name="visible">True</property>
- <property name="homogeneous">False</property>
<property name="spacing">2</property>
- <child internal-child="action_area">
- <object class="GtkHButtonBox" id="dialog-action_area1">
- <property name="visible">True</property>
- <property name="layout_style">GTK_BUTTONBOX_END</property>
- <child>
- <object class="GtkButton" id="help_button">
- <property name="visible">True</property>
- <property name="can_default">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-help</property>
- <property name="use_stock">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="close_button">
- <property name="visible">True</property>
- <property name="can_default">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-close</property>
- <property name="use_stock">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="pack_type">GTK_PACK_END</property>
- </packing>
- </child>
<child>
<object class="GtkNotebook" id="notebook">
- <property name="border_width">5</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="show_tabs">True</property>
- <property name="show_border">True</property>
- <property name="tab_pos">GTK_POS_TOP</property>
- <property name="scrollable">False</property>
- <property name="enable_popup">False</property>
+ <property name="border_width">5</property>
<child>
<object class="GtkVBox" id="vbox5">
- <property name="border_width">12</property>
<property name="visible">True</property>
- <property name="homogeneous">False</property>
+ <property name="border_width">12</property>
<property name="spacing">18</property>
<child>
<object class="GtkVBox" id="vbox6">
<property name="visible">True</property>
- <property name="homogeneous">False</property>
<property name="spacing">6</property>
<child>
<object class="GtkLabel" id="label6">
<property name="visible">True</property>
- <property name="label" translatable="yes">Image Enhancements</property>
- <property name="use_underline">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
<property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
+ <property name="label" translatable="yes">Image Enhancements</property>
<attributes>
- <attribute name="weight" value="PANGO_WEIGHT_BOLD"/>
+ <attribute name="weight" value="bold"/>
</attributes>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkHBox" id="hbox_interpolate">
<property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
<child>
<object class="GtkLabel" id="label_interpolate">
<property name="visible">True</property>
<property name="label"> </property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="interpolate_check">
+ <property name="label" translatable="yes">Smooth images when zoomed-_out</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Smooth images when zoomed-_out</property>
+ <property name="receives_default">False</property>
<property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">1</property>
</packing>
</child>
</object>
<packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
+ <property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkHBox" id="hbox_extrapolate">
<property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
<child>
<object class="GtkLabel" id="label_extrapolate">
<property name="visible">True</property>
<property name="label"> </property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="extrapolate_check">
+ <property name="label" translatable="yes">Smooth images when zoomed-_in</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">Smooth images when zoomed-_in</property>
+ <property name="receives_default">False</property>
<property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">1</property>
</packing>
</child>
</object>
<packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
+ <property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkHBox" id="hboxautorotate">
<property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
<child>
<object class="GtkLabel" id="labelautopad">
<property name="visible">True</property>
<property name="label"> </property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="autorotate_check">
+ <property name="label" translatable="yes">_Automatic orientation</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">_Automatic orientation</property>
+ <property name="receives_default">False</property>
<property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">1</property>
</packing>
</child>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkVBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="xalign">0</property>
+ <property name="label" translatable="yes">Background</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="left_padding">16</property>
+ <child>
+ <object class="GtkHBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkCheckButton" id="bg_color_check">
+ <property name="label" translatable="yes">As custom color:</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_action_appearance">False</property>
+ <property name="xalign">0</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkColorButton" id="bg_color_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="title" translatable="yes">Background Color</property>
+ <property name="color">#000000000000</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
</packing>
</child>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkVBox" id="vbox7">
<property name="visible">True</property>
- <property name="homogeneous">False</property>
<property name="spacing">6</property>
<child>
<object class="GtkLabel" id="label8">
<property name="visible">True</property>
- <property name="label" translatable="yes">Transparent Parts</property>
- <property name="use_underline">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
<property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
+ <property name="label" translatable="yes">Transparent Parts</property>
<attributes>
- <attribute name="weight" value="PANGO_WEIGHT_BOLD"/>
+ <attribute name="weight" value="bold"/>
</attributes>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkHBox" id="hbox4">
<property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
<child>
<object class="GtkLabel" id="label9">
<property name="visible">True</property>
<property name="label"> </property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkVBox" id="vbox8">
<property name="visible">True</property>
- <property name="homogeneous">False</property>
<property name="spacing">6</property>
<child>
<object class="GtkRadioButton" id="checkpattern_radio">
+ <property name="label" translatable="yes">As check _pattern</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">As check _pattern</property>
+ <property name="receives_default">False</property>
<property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkHBox" id="hbox5">
<property name="visible">True</property>
- <property name="homogeneous">False</property>
<property name="spacing">6</property>
<child>
<object class="GtkRadioButton" id="color_radio">
+ <property name="label" translatable="yes">As custom c_olor:</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">As custom c_olor:</property>
+ <property name="receives_default">False</property>
<property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
<property name="group">checkpattern_radio</property>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkColorButton" id="color_button">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="use_alpha">False</property>
+ <property name="receives_default">False</property>
<property name="title" translatable="yes">Color for Transparent Areas</property>
- <property name="focus_on_click">True</property>
</object>
<packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
+ <property name="position">1</property>
</packing>
</child>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="background_radio">
+ <property name="label" translatable="yes">As _background</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">As _background</property>
+ <property name="receives_default">False</property>
<property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
<property name="group">checkpattern_radio</property>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">2</property>
</packing>
</child>
</object>
<packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
+ <property name="position">1</property>
</packing>
</child>
</object>
<packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
+ <property name="position">1</property>
</packing>
</child>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">2</property>
</packing>
</child>
</object>
- <packing>
- <property name="tab_expand">False</property>
- <property name="tab_fill">True</property>
- </packing>
</child>
<child type="tab">
<object class="GtkLabel" id="label4">
<property name="visible">True</property>
<property name="label" translatable="yes">Image View</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
</object>
+ <packing>
+ <property name="tab_fill">False</property>
+ </packing>
</child>
<child>
<object class="GtkVBox" id="vbox11">
- <property name="border_width">12</property>
<property name="visible">True</property>
- <property name="homogeneous">False</property>
+ <property name="border_width">12</property>
<property name="spacing">18</property>
<child>
<object class="GtkVBox" id="vbox12">
<property name="visible">True</property>
- <property name="homogeneous">False</property>
<property name="spacing">6</property>
<child>
<object class="GtkLabel" id="label13">
<property name="visible">True</property>
- <property name="label" translatable="yes">Image Zoom</property>
- <property name="use_underline">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
<property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
+ <property name="label" translatable="yes">Image Zoom</property>
<attributes>
- <attribute name="weight" value="PANGO_WEIGHT_BOLD"/>
+ <attribute name="weight" value="bold"/>
</attributes>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkHBox" id="hbox7">
<property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
<child>
<object class="GtkLabel" id="label14">
<property name="visible">True</property>
<property name="label"> </property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkVBox" id="vbox13">
<property name="visible">True</property>
- <property name="homogeneous">False</property>
<property name="spacing">6</property>
<child>
<object class="GtkCheckButton" id="upscale_check">
+ <property name="label" translatable="yes">E_xpand images to fit screen</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">E_xpand images to fit screen</property>
+ <property name="receives_default">False</property>
<property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">0</property>
</packing>
</child>
</object>
<packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
+ <property name="position">1</property>
</packing>
</child>
</object>
<packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
+ <property name="position">1</property>
</packing>
</child>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkVBox" id="vbox14">
<property name="visible">True</property>
- <property name="homogeneous">False</property>
<property name="spacing">6</property>
<child>
<object class="GtkLabel" id="label15">
<property name="visible">True</property>
- <property name="label" translatable="yes">Sequence</property>
- <property name="use_underline">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
<property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
+ <property name="label" translatable="yes">Sequence</property>
<attributes>
- <attribute name="weight" value="PANGO_WEIGHT_BOLD"/>
+ <attribute name="weight" value="bold"/>
</attributes>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkHBox" id="hbox8">
<property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
<child>
<object class="GtkLabel" id="label16">
<property name="visible">True</property>
<property name="label"> </property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkVBox" id="vbox15">
<property name="visible">True</property>
- <property name="homogeneous">False</property>
<property name="spacing">6</property>
<child>
<object class="GtkHBox" id="seconds_hbox">
<property name="visible">True</property>
- <property name="homogeneous">False</property>
<property name="spacing">6</property>
<child>
<object class="GtkLabel" id="label36">
<property name="visible">True</property>
<property name="label" translatable="yes">_Switch image after:</property>
<property name="use_underline">True</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
<property name="mnemonic_widget">seconds_spin</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSpinButton" id="seconds_spin">
<property name="visible">True</property>
<property name="can_focus">True</property>
+ <property name="adjustment">adjustment1</property>
<property name="climb_rate">1</property>
- <property name="digits">0</property>
<property name="numeric">True</property>
- <property name="update_policy">GTK_UPDATE_ALWAYS</property>
- <property name="snap_to_ticks">False</property>
- <property name="wrap">False</property>
- <property name="adjustment">adjustment1</property>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="label18">
<property name="visible">True</property>
<property name="label" translatable="yes">seconds</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">2</property>
</packing>
</child>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="loop_check">
+ <property name="label" translatable="yes">_Loop sequence</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">_Loop sequence</property>
+ <property name="receives_default">False</property>
<property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
</object>
<packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
+ <property name="position">1</property>
</packing>
</child>
</object>
<packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
+ <property name="position">1</property>
</packing>
</child>
</object>
<packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
+ <property name="position">1</property>
</packing>
</child>
</object>
<packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
+ <property name="position">1</property>
</packing>
</child>
</object>
<packing>
- <property name="tab_expand">False</property>
- <property name="tab_fill">True</property>
+ <property name="position">1</property>
</packing>
</child>
<child type="tab">
<object class="GtkLabel" id="label5">
<property name="visible">True</property>
<property name="label" translatable="yes">Slideshow</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
</object>
+ <packing>
+ <property name="position">1</property>
+ <property name="tab_fill">False</property>
+ </packing>
</child>
<child>
<object class="GtkVBox" id="plugin_manager_container">
- <property name="border_width">12</property>
<property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
+ <property name="border_width">12</property>
<child>
<placeholder/>
</child>
</object>
<packing>
- <property name="tab_expand">False</property>
- <property name="tab_fill">True</property>
+ <property name="position">2</property>
</packing>
</child>
<child type="tab">
<object class="GtkLabel" id="label97">
<property name="visible">True</property>
<property name="label" translatable="yes">Plugins</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
</object>
+ <packing>
+ <property name="position">2</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <object class="GtkHButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="help_button">
+ <property name="label">gtk-help</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="close_button">
+ <property name="label">gtk-close</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">False</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
</child>
</object>
<packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
+ <property name="expand">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
</packing>
</child>
</object>
diff --git a/data/org.gnome.eog.gschema.xml.in.in b/data/org.gnome.eog.gschema.xml.in.in
index bd28ef3..c0a44a9 100644
--- a/data/org.gnome.eog.gschema.xml.in.in
+++ b/data/org.gnome.eog.gschema.xml.in.in
@@ -11,6 +11,11 @@
<_summary>Automatic orientation</_summary>
<_description>Whether the image should be rotated automatically based on EXIF orientation.</_description>
</key>
+ <key name="background-color" type="s">
+ <default>'#000000'</default>
+ <_summary>Background Color</_summary>
+ <_description>The color that is used to fill the area behind the image. If the use-background-color key is not set the color is determined by the active GTK theme instead.</_description>
+ </key>
<key name="interpolate" type="b">
<default>true</default>
<_summary>Interpolate Image</_summary>
@@ -41,6 +46,11 @@
<_summary>Transparency color</_summary>
<_description>If the transparency key has the value COLOR, then this key determines the color which is used for indicating transparency.</_description>
</key>
+ <key name="use-background-color" type="b">
+ <default>false</default>
+ <_summary>Use a custom background color</_summary>
+ <_description>If this is active the color set by the background-color key will be used to fill the area behind the image. If it is not set the current GTK theme will determine the fill color.</_description>
+ </key>
</schema>
<schema gettext-domain="@GETTEXT_PACKAGE@" id="org.gnome.eog.full_screen" path="/apps/eog/full_screen/">
<key name="loop" type="b">
diff --git a/src/eog-config-keys.h b/src/eog-config-keys.h
index 775bac7..ee99a92 100644
--- a/src/eog-config-keys.h
+++ b/src/eog-config-keys.h
@@ -37,6 +37,7 @@
#define EOG_CONF_DESKTOP_CAN_PRINT "/desktop/gnome/lockdown/disable_printing"
#define EOG_CONF_DESKTOP_CAN_SETUP_PAGE "/desktop/gnome/lockdown/disable_print_setup"
+#define EOG_CONF_VIEW_BACKGROUND_COLOR "background-color"
#define EOG_CONF_VIEW_INTERPOLATE "interpolate"
#define EOG_CONF_VIEW_EXTRAPOLATE "extrapolate"
#define EOG_CONF_VIEW_SCROLL_WHEEL_ZOOM "scroll_wheel_zoom"
@@ -44,6 +45,7 @@
#define EOG_CONF_VIEW_AUTOROTATE "autorotate"
#define EOG_CONF_VIEW_TRANSPARENCY "transparency"
#define EOG_CONF_VIEW_TRANS_COLOR "trans_color"
+#define EOG_CONF_VIEW_USE_BG_COLOR "use-background-color"
#define EOG_CONF_FULLSCREEN_LOOP "loop"
#define EOG_CONF_FULLSCREEN_UPSCALE "upscale"
diff --git a/src/eog-preferences-dialog.c b/src/eog-preferences-dialog.c
index 935618e..1db3988 100644
--- a/src/eog-preferences-dialog.c
+++ b/src/eog-preferences-dialog.c
@@ -133,6 +133,8 @@ eog_preferences_dialog_constructor (GType type,
GtkWidget *interpolate_check;
GtkWidget *extrapolate_check;
GtkWidget *autorotate_check;
+ GtkWidget *bg_color_check;
+ GtkWidget *bg_color_button;
GtkWidget *color_radio;
GtkWidget *checkpattern_radio;
GtkWidget *background_radio;
@@ -162,6 +164,8 @@ eog_preferences_dialog_constructor (GType type,
"interpolate_check", &interpolate_check,
"extrapolate_check", &extrapolate_check,
"autorotate_check", &autorotate_check,
+ "bg_color_check", &bg_color_check,
+ "bg_color_button", &bg_color_button,
"color_radio", &color_radio,
"checkpattern_radio", &checkpattern_radio,
"background_radio", &background_radio,
@@ -183,7 +187,16 @@ eog_preferences_dialog_constructor (GType type,
extrapolate_check, "active", G_SETTINGS_BIND_DEFAULT);
g_settings_bind (priv->view_settings, EOG_CONF_VIEW_AUTOROTATE,
autorotate_check, "active", G_SETTINGS_BIND_DEFAULT);
+ g_settings_bind (priv->view_settings, EOG_CONF_VIEW_USE_BG_COLOR,
+ bg_color_check, "active", G_SETTINGS_BIND_DEFAULT);
+ g_settings_bind_with_mapping (priv->view_settings,
+ EOG_CONF_VIEW_BACKGROUND_COLOR,
+ bg_color_button, "color",
+ G_SETTINGS_BIND_DEFAULT,
+ pd_string_to_color_mapping,
+ pd_color_to_string_mapping,
+ NULL, NULL);
g_object_set_data (G_OBJECT (color_radio),
GCONF_OBJECT_KEY,
EOG_CONF_VIEW_TRANSPARENCY);
diff --git a/src/eog-scroll-view.c b/src/eog-scroll-view.c
index f2303ec..86942a2 100644
--- a/src/eog-scroll-view.c
+++ b/src/eog-scroll-view.c
@@ -11,6 +11,7 @@
#include <librsvg/rsvg-cairo.h>
#endif
+#include "eog-config-keys.h"
#include "eog-marshal.h"
#include "eog-scroll-view.h"
#include "eog-debug.h"
@@ -74,6 +75,7 @@ static GtkTargetEntry target_table[] = {
enum {
PROP_0,
+ PROP_USE_BG_COLOR,
PROP_BACKGROUND_COLOR
};
@@ -143,6 +145,7 @@ struct _EogScrollViewPrivate {
/* the type of the cursor we are currently showing */
EogScrollViewCursor cursor;
+ gboolean use_bg_color;
GdkColor *background_color;
GdkColor *override_bg_color;
@@ -2181,13 +2184,55 @@ eog_scroll_view_scrollbars_visible (EogScrollView *view)
object creation/freeing
---------------------------------*/
+static gboolean
+sv_string_to_color_mapping (GValue *value,
+ GVariant *variant,
+ gpointer user_data)
+{
+ GdkColor color;
+
+ g_return_val_if_fail (g_variant_is_of_type (variant, G_VARIANT_TYPE_STRING), FALSE);
+
+ if (gdk_color_parse (g_variant_get_string (variant, NULL), &color)) {
+ g_value_set_boxed (value, &color);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static GVariant*
+sv_color_to_string_mapping (const GValue *value,
+ const GVariantType *expected_type,
+ gpointer user_data)
+{
+ GVariant *variant = NULL;
+ GdkColor *color;
+ gchar *hex_val;
+
+ g_return_val_if_fail (G_VALUE_TYPE (value) == GDK_TYPE_COLOR, NULL);
+ g_return_val_if_fail (g_variant_type_equal (expected_type, G_VARIANT_TYPE_STRING), NULL);
+
+ color = g_value_get_boxed (value);
+ hex_val = g_strdup_printf ("#%02X%02X%02X",
+ color->red / 256,
+ color->green / 256,
+ color->blue / 256);
+ variant = g_variant_new_string (hex_val);
+ g_free (hex_val);
+
+ return variant;
+}
+
static void
eog_scroll_view_init (EogScrollView *view)
{
+ GSettings *settings;
EogScrollViewPrivate *priv;
priv = view->priv = EOG_SCROLL_VIEW_GET_PRIVATE (view);
+ settings = g_settings_new (EOG_CONF_VIEW);
priv->zoom = 1.0;
priv->min_zoom = MIN_ZOOM_FACTOR;
@@ -2205,7 +2250,16 @@ eog_scroll_view_init (EogScrollView *view)
priv->transp_color = 0;
priv->cursor = EOG_SCROLL_VIEW_CURSOR_NORMAL;
priv->menu = NULL;
- priv->background_color = NULL;
+
+ g_settings_bind (settings, EOG_CONF_VIEW_USE_BG_COLOR, view,
+ "use-background-color", G_SETTINGS_BIND_DEFAULT);
+ g_settings_bind_with_mapping (settings, EOG_CONF_VIEW_BACKGROUND_COLOR,
+ view, "background-color",
+ G_SETTINGS_BIND_DEFAULT,
+ sv_string_to_color_mapping,
+ sv_color_to_string_mapping, NULL, NULL);
+ g_object_unref (settings);
+
priv->override_bg_color = NULL;
priv->background_surface = NULL;
}
@@ -2264,6 +2318,9 @@ eog_scroll_view_get_property (GObject *object, guint property_id,
priv = view->priv;
switch (property_id) {
+ case PROP_USE_BG_COLOR:
+ g_value_set_boolean (value, priv->use_bg_color);
+ break;
case PROP_BACKGROUND_COLOR:
//FIXME: This doesn't really handle the NULL color.
g_value_set_boxed (value, priv->background_color);
@@ -2286,6 +2343,9 @@ eog_scroll_view_set_property (GObject *object, guint property_id,
priv = view->priv;
switch (property_id) {
+ case PROP_USE_BG_COLOR:
+ eog_scroll_view_set_use_bg_color (view, g_value_get_boolean (value));
+ break;
case PROP_BACKGROUND_COLOR:
{
const GdkColor *color = g_value_get_boxed (value);
@@ -2324,6 +2384,11 @@ eog_scroll_view_class_init (EogScrollViewClass *klass)
GDK_TYPE_COLOR,
G_PARAM_READWRITE | G_PARAM_STATIC_NAME));
+ g_object_class_install_property (
+ gobject_class, PROP_USE_BG_COLOR,
+ g_param_spec_boolean ("use-background-color", NULL, NULL, FALSE,
+ G_PARAM_READWRITE | G_PARAM_STATIC_NAME));
+
view_signals [SIGNAL_ZOOM_CHANGED] =
g_signal_new ("zoom_changed",
EOG_TYPE_SCROLL_VIEW,
@@ -2556,8 +2621,12 @@ _eog_scroll_view_update_bg_color (EogScrollView *view)
const GdkColor *selected;
EogScrollViewPrivate *priv = view->priv;
- selected = (priv->override_bg_color) ? priv->override_bg_color
- : priv->background_color;
+ if (!priv->use_bg_color)
+ selected = NULL;
+ else if (priv->override_bg_color)
+ selected = priv->override_bg_color;
+ else
+ selected = priv->background_color;
if (priv->transp_style == EOG_TRANSP_BACKGROUND
&& priv->background_surface != NULL) {
@@ -2593,6 +2662,24 @@ eog_scroll_view_override_bg_color (EogScrollView *view,
}
void
+eog_scroll_view_set_use_bg_color (EogScrollView *view, gboolean use)
+{
+ EogScrollViewPrivate *priv;
+
+ g_return_if_fail (EOG_IS_SCROLL_VIEW (view));
+
+ priv = view->priv;
+
+ if (use != priv->use_bg_color) {
+ priv->use_bg_color = use;
+
+ _eog_scroll_view_update_bg_color (view);
+
+ g_object_notify (G_OBJECT (view), "use-background-color");
+ }
+}
+
+void
eog_scroll_view_set_scroll_wheel_zoom (EogScrollView *view,
gboolean scroll_wheel_zoom)
{
diff --git a/src/eog-scroll-view.h b/src/eog-scroll-view.h
index 7b6d095..f00fce6 100644
--- a/src/eog-scroll-view.h
+++ b/src/eog-scroll-view.h
@@ -54,7 +54,7 @@ void eog_scroll_view_set_background_color (EogScrollView *view,
const GdkColor *color);
void eog_scroll_view_override_bg_color (EogScrollView *view,
const GdkColor *color);
-
+void eog_scroll_view_set_use_bg_color (EogScrollView *view, gboolean use);
/* zoom api */
void eog_scroll_view_zoom_in (EogScrollView *view, gboolean smooth);
void eog_scroll_view_zoom_out (EogScrollView *view, gboolean smooth);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]