Merge lp:~mblayman/entertainer/start-fullscreen into lp:entertainer

Proposed by Matt Layman
Status: Merged
Approved by: Paul Hummer
Approved revision: 356
Merged at revision: not available
Proposed branch: lp:~mblayman/entertainer/start-fullscreen
Merge into: lp:entertainer
Diff against target: None lines
To merge this branch: bzr merge lp:~mblayman/entertainer/start-fullscreen
Reviewer Review Type Date Requested Status
Samuel Buffet (community) Approve
Paul Hummer Approve
Review via email: mp+4297@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Matt Layman (mblayman) wrote :

This branch fixes problems that Entertainer has with fullscreen. It changes the default configuration so that Entertainer starts in fullscreen by default. This should work on all screens so it should eliminate the whole class of questions that say "how do I get Entertainer to fit on my <small resolution screen size here> screen?"

It also adds the GTK window back back and I fixed up a number of issues related to the window mode. The close button now works and I've added the Entertainer icon to the window.

The toggle between fullscreen and window mode still isn't very good, but frankly, neither is what we had. The root of the problem there is that we don't currently have a way to repaint the currently displayed screen. Adding that capability would make this branch enormous so I haven't done it (and I think Samuel had put some effort into that).

Revision history for this message
Paul Hummer (rockstar) wrote :

Matt-

  This is quite the branch! Most of it was the glade file, so I understand
that it's quite a bit smaller than it looks. As usual, your code is sound, and
I don't have many comments, just a few on the docsctrings, etc.

  I think it might be a good idea to have Samuel take a look at this and make
sure you aren't stepping on his toes with the work he's doing.

Cheers,
Paul

=== modified file 'entertainerlib/frontend/gui/user_interface.py'
--- a/entertainerlib/frontend/gui/user_interface.py 2009-02-07 20:28:47 +0000
+++ b/entertainerlib/frontend/gui/user_interface.py 2009-03-09 05:51:10 +0000
@@ -19,32 +24,46 @@
 from entertainerlib.utils.logger import Logger

 class UserInterface:
- """
- Entertainer user interface.
-
- Object from this class represents the main window of the Entertainer
- client. This window is actually a wrapper for Pigment viewport.
- """
+ '''This class represents the main GUI window of the Entertainer client.'''

I've personally been trying to stay away from "This class..." as it's a bit
redundant. Maybe something like "A main GUI Window for the Entertainer
client."

review: Approve
356. By Matt Layman

Fixed a doc string comment.

Revision history for this message
Matt Layman (mblayman) wrote :

=== modified file 'entertainerlib/frontend/gui/user_interface.py'
--- a/entertainerlib/frontend/gui/user_interface.py 2009-02-07 20:28:47 +0000
+++ b/entertainerlib/frontend/gui/user_interface.py 2009-03-09 05:51:10 +0000
@@ -19,32 +24,46 @@
 from entertainerlib.utils.logger import Logger

 class UserInterface:
- """
- Entertainer user interface.
-
- Object from this class represents the main window of the Entertainer
- client. This window is actually a wrapper for Pigment viewport.
- """
+ '''This class represents the main GUI window of the Entertainer client.'''

I've personally been trying to stay away from "This class..." as it's a bit
redundant. Maybe something like "A main GUI Window for the Entertainer
client."
"

I wrote it that way because I was trying to craft a whole sentence. I guess in this case, it's best to just leave it as a sentence fragment. It's fixed now. Here's the partial diff:

=== modified file 'entertainerlib/frontend/gui/user_interface.py'
--- entertainerlib/frontend/gui/user_interface.py 2009-03-09 01:38:26 +0000
+++ entertainerlib/frontend/gui/user_interface.py 2009-03-09 21:44:57 +0000
@@ -24,7 +24,7 @@
 from entertainerlib.utils.logger import Logger

 class UserInterface:
- '''This class represents the main GUI window of the Entertainer client.'''
+ '''A main GUI window of the Entertainer client.'''

     def __init__(self, feed_library, image_library, music_library,
         video_library, quit_frontend_callback):

Revision history for this message
Matt Layman (mblayman) wrote :

=== modified file 'entertainerlib/frontend/gui/user_interface.py'
--- a/entertainerlib/frontend/gui/user_interface.py 2009-02-07 20:28:47 +0000
+++ b/entertainerlib/frontend/gui/user_interface.py 2009-03-09 05:51:10 +0000
@@ -19,32 +24,46 @@
 from entertainerlib.utils.logger import Logger

 class UserInterface:
- """
- Entertainer user interface.
-
- Object from this class represents the main window of the Entertainer
- client. This window is actually a wrapper for Pigment viewport.
- """
+ '''This class represents the main GUI window of the Entertainer client.'''

I've personally been trying to stay away from "This class..." as it's a bit
redundant. Maybe something like "A main GUI Window for the Entertainer
client."
"

I wrote it that way because I was trying to craft a whole sentence. I guess in this case, it's best to just leave it as a sentence fragment. It's fixed now. Here's the partial diff:

=== modified file 'entertainerlib/frontend/gui/user_interface.py'
--- entertainerlib/frontend/gui/user_interface.py 2009-03-09 01:38:26 +0000
+++ entertainerlib/frontend/gui/user_interface.py 2009-03-09 21:44:57 +0000
@@ -24,7 +24,7 @@
 from entertainerlib.utils.logger import Logger

 class UserInterface:
- '''This class represents the main GUI window of the Entertainer client.'''
+ '''A main GUI window of the Entertainer client.'''

     def __init__(self, feed_library, image_library, music_library,
         video_library, quit_frontend_callback):

357. By Matt Layman

Merged from trunk and resolved conflicts.

Revision history for this message
Samuel Buffet (samuel-buffet) wrote :

Matt here is my review,

goal of the branch ok

make test : ok
make lint : ok

functional tests :
entertainer ok
content-manager ok
entertainer-preferences ok

This branch is real improvement of Entertainer as the Clutter windowing system was very poor.

@Paul: This branch does not conflict with the widgets refactoring work I've started. It's more an addition than anything else.

Thanks Matt for that very good work.
Samuel,

review: Approve
Revision history for this message
Matt Layman (mblayman) wrote :

Commit Message: Entertainer now defaults to starting in fullsceen mode, and the preferences have been modified so that users can toggle between fullscreen and window mode. (Matt Layman)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'cfg/preferences.conf'
2--- cfg/preferences.conf 2009-02-07 00:44:47 +0000
3+++ cfg/preferences.conf 2009-03-08 21:29:32 +0000
4@@ -5,7 +5,7 @@
5 stage_width = 1366
6 stage_height = 768
7 show_effects = True
8-start_in_fullscreen = False
9+start_in_fullscreen = True
10 theme = Default
11 backend_port = 45054
12 history_size = 8
13
14=== modified file 'entertainerlib/frontend/__init__.py'
15--- entertainerlib/frontend/__init__.py 2009-02-07 20:28:47 +0000
16+++ entertainerlib/frontend/__init__.py 2009-03-08 03:16:25 +0000
17@@ -1,10 +1,15 @@
18 '''Frontend gui to entertainer'''
19+# pylint: disable-msg=W0612
20
21 def main(*args, **kwargs):
22 '''Frontend runner'''
23
24- # Import statements are inside thu function so that they aren't imported
25+ # Import statements are inside the function so that they aren't imported
26 # every time something from the frontend is imported
27+
28+ # cluttergtk must be imported before the first import of clutter so it
29+ # must be imported even though pylint complains about it not being used.
30+ import cluttergtk
31 import clutter
32 import gobject
33 import gtk
34
35=== modified file 'entertainerlib/frontend/gui/user_interface.py'
36--- entertainerlib/frontend/gui/user_interface.py 2009-02-07 20:28:47 +0000
37+++ entertainerlib/frontend/gui/user_interface.py 2009-03-09 01:38:26 +0000
38@@ -1,10 +1,15 @@
39 '''UserInterface - Main window of the Entertainer frontend'''
40
41 __licence__ = "GPLv2"
42-__copyright__ = "2007, Lauri Taimila"
43-__author__ = "Lauri Taimila <lauri@taimila.com>"
44-
45+__copyright__ = "2007, Lauri Taimila, 2009, Matt Layman"
46+__author__ = ("Lauri Taimila <lauri@taimila.com>",
47+ 'Matt Layman <laymansterms.dev@gmail.com>')
48+
49+import os
50+
51+import cluttergtk
52 import clutter
53+import gobject
54 import gtk
55
56 from entertainerlib.frontend.gui.screen_history import ScreenHistory
57@@ -19,32 +24,46 @@
58 from entertainerlib.utils.logger import Logger
59
60 class UserInterface:
61- """
62- Entertainer user interface.
63-
64- Object from this class represents the main window of the Entertainer
65- client. This window is actually a wrapper for Pigment viewport.
66- """
67+ '''This class represents the main GUI window of the Entertainer client.'''
68
69 def __init__(self, feed_library, image_library, music_library,
70 video_library, quit_frontend_callback):
71 self.quit_frontend_callback = quit_frontend_callback
72 self.config = Configuration()
73
74- self.STAGE_WIDTH = self.config.get_stage_width()
75- self.STAGE_HEIGHT = self.config.get_stage_height()
76+ # Store the dimensions in case users want to return to window mode
77+ self.old_width = self.config.get_stage_width()
78+ self.old_height = self.config.get_stage_height()
79
80- self.theme = self.config.theme
81 self.logger = Logger().getLogger('frontend.gui.UserInterface')
82
83- # Set desktop resolution width and height to class attributes
84- rwindow = gtk.gdk.get_default_root_window()
85- self.res_width, self.res_height = rwindow.get_size()
86- self.fullscreen_offset = int(
87- (self.res_height - self.res_width * 0.5625) / 2) # Keep 16:9
88-
89- # Create stage
90- self.stage = clutter.Stage()
91+ self.window = gtk.Window()
92+ self.window.connect('destroy', self.destroy_callback)
93+ self.window.set_title('Entertainer')
94+
95+ # Set the window icon
96+ icon_theme = gtk.icon_theme_get_default()
97+ try:
98+ icon = icon_theme.load_icon('entertainer', 48, 0)
99+ self.window.set_icon(icon)
100+ except gobject.GError:
101+ # Must not be installed from a package, get icon from the branch
102+ file_dir = os.path.dirname(__file__)
103+ icon_path = os.path.join(file_dir, '..', '..', '..', 'icons',
104+ 'hicolor', '48x48', 'apps', 'entertainer.png')
105+ icon = gtk.gdk.pixbuf_new_from_file(icon_path)
106+ self.window.set_icon(icon)
107+
108+ # cluttergtk.Embed contains the stage that is the canvas for the GUI
109+ embed = cluttergtk.Embed()
110+ # Enforce a minimum size to prevent weird widget bugs
111+ embed.set_size_request(
112+ self.config.get_stage_width(), self.config.get_stage_height())
113+ self.window.add(embed)
114+
115+ # The embed widget must be realized before you can get the stage.
116+ embed.realize()
117+ self.stage = embed.get_stage()
118
119 #XXX: Joshua: Disabling mipmapping as this creates problems for
120 #intel graphics chips (example
121@@ -53,27 +72,31 @@
122 #problem
123 clutter.set_use_mipmapped_text(False)
124
125- #self.stage.set_user_resizable(True)
126 self.stage.connect('key-press-event', self.handle_keyboard_event)
127- self.stage.set_color(self.theme.get_color("background"))
128- self.stage.set_size(self.STAGE_WIDTH, self.STAGE_HEIGHT)
129+ self.stage.set_color(self.config.theme.get_color("background"))
130+ self.stage.set_size(
131+ self.config.get_stage_width(), self.config.get_stage_height())
132 self.stage.set_title("Entertainer")
133
134- self.is_fullscreen = False
135+ if self.config.start_in_fullscreen():
136+ self._fullscreen()
137+ self.is_fullscreen = True
138+ else:
139+ self.is_fullscreen = False
140
141 # Initialize Screen history (allows user to navigate "back")
142 self.history = ScreenHistory(self.stage, self.config.history_size())
143- # Intialize media player
144+
145 self.player = MediaPlayer(self.stage,
146- self.STAGE_WIDTH,
147- self.STAGE_HEIGHT)
148+ self.config.get_stage_width(), self.config.get_stage_height())
149
150 # Initialize menu overlay texture
151 self.overlay_status = False
152- self.menu_overlay = MenuOverlay(self.theme)
153+ self.menu_overlay = MenuOverlay(self.config.theme)
154 self.menu_overlay.set_opacity(0)
155 self.menu_overlay.set_name("overlay")
156- self.menu_overlay.set_size(self.STAGE_WIDTH, self.STAGE_HEIGHT)
157+ self.menu_overlay.set_size(
158+ self.config.get_stage_width(), self.config.get_stage_height())
159 self.stage.add(self.menu_overlay)
160
161 # Transition object. Handles effects between screen changes.
162@@ -86,26 +109,19 @@
163 self.player, self.history,
164 self.move_to_new_screen, self.changeScreen)
165
166- # Black bars that are used if monitor/TV aspect ratio is not 16:9
167- self.top_bar = clutter.Rectangle()
168- self.top_bar.set_size(self.res_width, self.fullscreen_offset)
169- self.top_bar.set_color(clutter.Color(0, 0, 0, 255))
170- self.top_bar.set_position(0, 0)
171- self.top_bar.hide()
172- self.stage.add(self.top_bar)
173-
174- self.bottom_bar = clutter.Rectangle()
175- self.bottom_bar.set_size(self.res_width, self.fullscreen_offset)
176- self.bottom_bar.set_color(clutter.Color(0, 0, 0, 255))
177- self.bottom_bar.set_position(0,
178- int(self.res_width * 0.5625 - self.fullscreen_offset))
179- self.bottom_bar.hide()
180- self.stage.add(self.bottom_bar)
181 self.logger.debug("Frontend GUI initialized succesfully")
182
183- # This will probably be needed eventually to fix the exiting bug
184- #def delete_event(self, widget, event, data=None):
185- #self.shutdown()
186+ def _fullscreen(self):
187+ '''Set the window, stage, and config to fullscreen dimensions.'''
188+ self.window.fullscreen()
189+ self.stage.fullscreen()
190+ width, height = self.stage.get_size()
191+ self.config.set_stage_width(int(width))
192+ self.config.set_stage_height(int(height))
193+
194+ def destroy_callback(self, widget):
195+ '''Handle the GTK destroy signal and close gracefully.'''
196+ self.shutdown()
197
198 def confirm_exit(self):
199 """
200@@ -159,31 +175,14 @@
201 """
202 if self.is_fullscreen:
203 self.stage.unfullscreen()
204- self.top_bar.hide()
205- self.bottom_bar.hide()
206- self.resize_stage(self.STAGE_WIDTH, self.STAGE_HEIGHT)
207- self.current.set_position(0, 0)
208- self.menu_overlay.set_position(0, 0)
209+ self.window.unfullscreen()
210+ self.config.set_stage_width(self.old_width)
211+ self.config.set_stage_height(self.old_height)
212 self.is_fullscreen = False
213 else:
214- self.stage.fullscreen()
215- self.top_bar.show()
216- self.bottom_bar.show()
217- self.resize_stage(self.res_width, self.res_width * 0.5625)
218- self.current.set_position(0, self.fullscreen_offset)
219- self.menu_overlay.set_position(0, self.fullscreen_offset)
220+ self._fullscreen()
221 self.is_fullscreen = True
222
223- def resize_stage(self, width, height):
224- """
225- Resize and scale stage.
226- @param width: New width for the stage
227- @param height: New height for the stage
228- """
229- self.stage.set_scale(float(width) / float(self.STAGE_WIDTH),
230- float(height) / float(self.STAGE_HEIGHT))
231- self.stage.set_size(int(width), int(height))
232-
233 def create_screen(self, screen_type, data=None):
234 '''Delegate to the screen factory to generate a screen.'''
235 screen = self.screen_factory.generate_screen(screen_type, data)
236@@ -198,11 +197,11 @@
237
238 def show(self):
239 '''Show the user interface.'''
240- self.stage.show()
241+ self.window.show_all()
242
243 def hide(self):
244 '''Hide the user interface.'''
245- self.stage.hide()
246+ self.window.hide_all()
247
248 def _remove_from_stage(self, group):
249 '''Remove the listed group from the stage'''
250
251=== modified file 'entertainerlib/frontend/gui/widgets/base.py'
252--- entertainerlib/frontend/gui/widgets/base.py 2009-01-11 01:35:47 +0000
253+++ entertainerlib/frontend/gui/widgets/base.py 2009-03-08 03:16:25 +0000
254@@ -24,14 +24,3 @@
255 result = int(self.config.get_stage_height() * percentage)
256 return result
257
258- def get_abs_x_pos(self, percentage):
259- """Transform percentage to an abs position based on the stage width
260- within the restriction of 16:9"""
261- result = self.get_abs_x(percentage)
262- return result
263-
264- def get_abs_y_pos(self, percentage):
265- """Transform percentage to an abs position based on the stage height
266- within the restriction of 16:9"""
267- result = self.get_abs_y(percentage) + self.config.get_vertical_offset()
268- return result
269
270=== modified file 'entertainerlib/frontend/gui/widgets/label.py'
271--- entertainerlib/frontend/gui/widgets/label.py 2009-01-10 23:39:40 +0000
272+++ entertainerlib/frontend/gui/widgets/label.py 2009-03-08 03:16:25 +0000
273@@ -78,8 +78,8 @@
274 (x_pos_percent, y_pos_percent) = position_pair
275
276 clutter.Label.set_position(self,
277- self.get_abs_x_pos(x_pos_percent),
278- self.get_abs_y_pos(y_pos_percent))
279+ self.get_abs_x(x_pos_percent),
280+ self.get_abs_y(y_pos_percent))
281
282 position = property(_get_position, _set_position)
283
284
285=== modified file 'entertainerlib/frontend/gui/widgets/scroll_area.py'
286--- entertainerlib/frontend/gui/widgets/scroll_area.py 2009-01-11 00:12:18 +0000
287+++ entertainerlib/frontend/gui/widgets/scroll_area.py 2009-03-08 03:16:25 +0000
288@@ -29,8 +29,8 @@
289 self.content_group = None
290
291 self.set_position(
292- self.get_abs_x_pos(x_pos_percent),
293- self.get_abs_y_pos(y_pos_percent))
294+ self.get_abs_x(x_pos_percent),
295+ self.get_abs_y(y_pos_percent))
296
297 # Create content position indicator
298 self.indicator = ListIndicator(0.2, 0.045, ListIndicator.VERTICAL)
299
300=== modified file 'entertainerlib/frontend/gui/widgets/texture.py'
301--- entertainerlib/frontend/gui/widgets/texture.py 2009-01-11 00:05:59 +0000
302+++ entertainerlib/frontend/gui/widgets/texture.py 2009-03-08 03:16:25 +0000
303@@ -36,8 +36,8 @@
304 (x_pos_percent, y_pos_percent) = position_pair
305
306 clutter.Texture.set_position(self,
307- self.get_abs_x_pos(x_pos_percent),
308- self.get_abs_y_pos(y_pos_percent))
309+ self.get_abs_x(x_pos_percent),
310+ self.get_abs_y(y_pos_percent))
311
312 position = property(_get_position, _set_position)
313
314
315=== modified file 'entertainerlib/tests/test_base.py'
316--- entertainerlib/tests/test_base.py 2009-01-31 21:36:56 +0000
317+++ entertainerlib/tests/test_base.py 2009-03-08 03:16:25 +0000
318@@ -32,16 +32,3 @@
319 """Test getting the absolute size of y based on the stage height"""
320 self.assertEqual(self.base.get_abs_y(.25), 192)
321
322- def testGetAbsXPos(self):
323- """Test getting the position of x within the 16:9 viewing area"""
324- self.assertEqual(self.base.get_abs_x_pos(.25), 341)
325-
326- def testGetAbsYPos(self):
327- """Test getting the position of y within the 16:9 viewing area"""
328- # Need to modify the private config for this test to get an interesting
329- # stage size that actually has an offset
330- self.base.config.set_stage_width(16)
331- self.base.config.set_stage_height(11)
332-
333- self.assertEqual(self.base.get_abs_y_pos(.5), 6)
334-
335
336=== modified file 'entertainerlib/tests/test_configuration.py'
337--- entertainerlib/tests/test_configuration.py 2009-02-07 20:28:47 +0000
338+++ entertainerlib/tests/test_configuration.py 2009-03-08 03:16:25 +0000
339@@ -69,12 +69,6 @@
340 self.configuration.set_stage_height],
341 {'new_height' : 768, 'sanitize' : True})
342
343- def testGetVerticalOffset(self):
344- '''Test getting the vertical offset'''
345- self.configuration.set_stage_height(11)
346- self.configuration.set_stage_width(16)
347- self.assertEqual(self.configuration.get_vertical_offset(), 1)
348-
349 def testGetCfgDir(self):
350 """Test getting the cfg dir"""
351 self.assertEqual(self.configuration.get_cfg_dir(), self.config.TEST_DIR)
352
353=== modified file 'entertainerlib/utils/configuration.py'
354--- entertainerlib/utils/configuration.py 2009-02-07 20:28:47 +0000
355+++ entertainerlib/utils/configuration.py 2009-03-08 21:29:32 +0000
356@@ -102,7 +102,6 @@
357
358 self.stage_width = None
359 self.stage_height = None
360- self.vertical_offset = None
361
362 def create_cfg_dir(self):
363 '''Create a configuration directory and default config files.'''
364@@ -225,12 +224,6 @@
365
366 self.stage_height = new_height
367
368- def get_vertical_offset(self):
369- '''Get the vertical offset that will keep widgets within a 16:9 ratio'''
370- self.vertical_offset = int((self.get_stage_height() -
371- (self.get_stage_width() * .5625)) / 2)
372- return self.vertical_offset
373-
374 def get_theme_path(self):
375 """
376 Get absolute path of the used theme.
377@@ -432,15 +425,12 @@
378 return result
379
380 def start_in_fullscreen(self):
381- """
382- Return True if frontend should start in Fullscreen mode, otherwise False
383- @return: boolean
384- """
385+ '''Boolean to determine whether to start in fullscreen mode or not.'''
386 try:
387 result = self.preferences.getboolean("General",
388 "start_in_fullscreen")
389 except (NoSectionError, NoOptionError):
390- return False
391+ return True
392 return result
393
394 def start_auto_server(self):
395
396=== modified file 'entertainerlib/utils/glade/entertainer-preferences.glade'
397--- entertainerlib/utils/glade/entertainer-preferences.glade 2009-02-07 00:44:47 +0000
398+++ entertainerlib/utils/glade/entertainer-preferences.glade 2009-03-08 22:29:55 +0000
399@@ -1,719 +1,1223 @@
400-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
401-<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
402-<!--Generated with glade3 3.4.5 on Sun Dec 14 21:26:03 2008 -->
403+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
404+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
405+
406 <glade-interface>
407- <widget class="GtkDialog" id="PreferencesDialog">
408- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
409- <property name="border_width">5</property>
410- <property name="title" translatable="yes">Preferences</property>
411- <property name="modal">True</property>
412- <property name="window_position">GTK_WIN_POS_CENTER</property>
413- <property name="icon_name">gtk-preferences</property>
414- <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
415- <property name="has_separator">False</property>
416- <signal name="delete_event" handler="on_PreferencesDialog_delete_event"/>
417- <child internal-child="vbox">
418- <widget class="GtkVBox" id="dialog-vbox1">
419- <property name="visible">True</property>
420- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
421- <property name="spacing">2</property>
422- <child>
423- <widget class="GtkNotebook" id="notebook1">
424- <property name="visible">True</property>
425- <property name="can_focus">True</property>
426- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
427- <child>
428- <widget class="GtkVBox" id="vbox4">
429- <property name="visible">True</property>
430- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
431- <child>
432- <widget class="GtkFrame" id="frame3">
433- <property name="visible">True</property>
434- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
435- <property name="border_width">5</property>
436- <property name="label_xalign">0</property>
437- <property name="shadow_type">GTK_SHADOW_NONE</property>
438- <child>
439- <widget class="GtkAlignment" id="alignment3">
440- <property name="visible">True</property>
441- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
442- <property name="left_padding">12</property>
443- <child>
444- <widget class="GtkVBox" id="vbox5">
445- <property name="visible">True</property>
446- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
447- <child>
448- <widget class="GtkCheckButton" id="checkbutton_autostart">
449- <property name="visible">True</property>
450- <property name="can_focus">True</property>
451- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
452- <property name="label" translatable="yes">Start server automatically</property>
453- <property name="response_id">0</property>
454- <property name="draw_indicator">True</property>
455- <signal name="toggled" handler="on_checkbutton_autostart_toggled"/>
456- </widget>
457- </child>
458- <child>
459- <widget class="GtkCheckButton" id="checkbutton_systray_icon">
460- <property name="visible">True</property>
461- <property name="can_focus">True</property>
462- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
463- <property name="label" translatable="yes">Display system tray icon in notification area</property>
464- <property name="response_id">0</property>
465- <property name="draw_indicator">True</property>
466- <signal name="toggled" handler="on_checkbutton_systray_icon_toggled"/>
467- </widget>
468- <packing>
469- <property name="position">1</property>
470- </packing>
471- </child>
472- <child>
473- <placeholder/>
474- </child>
475- </widget>
476- </child>
477- </widget>
478- </child>
479- <child>
480- <widget class="GtkLabel" id="label15">
481- <property name="visible">True</property>
482- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
483- <property name="label" translatable="yes">&lt;b&gt;Server settings&lt;/b&gt;</property>
484- <property name="use_markup">True</property>
485- </widget>
486- <packing>
487- <property name="type">label_item</property>
488- </packing>
489- </child>
490- </widget>
491- <packing>
492- <property name="padding">5</property>
493- </packing>
494- </child>
495- <child>
496- <widget class="GtkFrame" id="frame4">
497- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
498- <property name="border_width">5</property>
499- <property name="label_xalign">0</property>
500- <property name="shadow_type">GTK_SHADOW_NONE</property>
501- <child>
502- <widget class="GtkAlignment" id="alignment4">
503- <property name="visible">True</property>
504- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
505- <property name="left_padding">12</property>
506- <child>
507- <widget class="GtkVBox" id="vbox6">
508- <property name="visible">True</property>
509- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
510- <child>
511- <widget class="GtkHBox" id="hbox9">
512- <property name="visible">True</property>
513- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
514- <child>
515- <widget class="GtkSpinButton" id="spinbutton1">
516- <property name="visible">True</property>
517- <property name="can_focus">True</property>
518- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
519- <property name="max_length">25</property>
520- <property name="adjustment">0 0 100 1 10 0</property>
521- </widget>
522- <packing>
523- <property name="expand">False</property>
524- </packing>
525- </child>
526- <child>
527- <widget class="GtkLabel" id="label26">
528- <property name="visible">True</property>
529- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
530- <property name="label" translatable="yes">Screen history size</property>
531- </widget>
532- <packing>
533- <property name="expand">False</property>
534- <property name="padding">5</property>
535- <property name="position">1</property>
536- </packing>
537- </child>
538- </widget>
539- </child>
540- <child>
541- <placeholder/>
542- </child>
543- <child>
544- <placeholder/>
545- </child>
546- </widget>
547- </child>
548- </widget>
549- </child>
550- <child>
551- <widget class="GtkLabel" id="label16">
552- <property name="visible">True</property>
553- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
554- <property name="label" translatable="yes">&lt;b&gt;What comes here?&lt;/b&gt;</property>
555- <property name="use_markup">True</property>
556- </widget>
557- <packing>
558- <property name="type">label_item</property>
559- </packing>
560- </child>
561- </widget>
562- <packing>
563- <property name="padding">5</property>
564- <property name="position">1</property>
565- </packing>
566- </child>
567- </widget>
568- </child>
569- <child>
570- <widget class="GtkLabel" id="label1">
571- <property name="visible">True</property>
572- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
573- <property name="label" translatable="yes">General</property>
574- </widget>
575- <packing>
576- <property name="type">tab</property>
577- <property name="tab_fill">False</property>
578- </packing>
579- </child>
580- <child>
581- <widget class="GtkVBox" id="vbox_user_interface">
582- <property name="visible">True</property>
583- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
584- <child>
585- <widget class="GtkFrame" id="frame_effects">
586- <property name="visible">True</property>
587- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
588- <property name="border_width">5</property>
589- <property name="label_xalign">0</property>
590- <property name="shadow_type">GTK_SHADOW_NONE</property>
591- <child>
592- <widget class="GtkAlignment" id="alignment5">
593- <property name="visible">True</property>
594- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
595- <property name="left_padding">12</property>
596- <child>
597- <widget class="GtkVBox" id="vbox7">
598- <property name="visible">True</property>
599- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
600- <child>
601- <widget class="GtkCheckButton" id="effect_checkbox">
602- <property name="visible">True</property>
603- <property name="can_focus">True</property>
604- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
605- <property name="label" translatable="yes">Show user interface effects</property>
606- <property name="response_id">0</property>
607- <property name="draw_indicator">True</property>
608- <signal name="toggled" handler="on_effect_checkbox_toggled"/>
609- </widget>
610- <packing>
611- <property name="padding">5</property>
612- </packing>
613- </child>
614- <child>
615- <widget class="GtkHBox" id="hbox1">
616- <property name="visible">True</property>
617- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
618- <child>
619- <widget class="GtkLabel" id="label19">
620- <property name="visible">True</property>
621- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
622- <property name="xalign">0</property>
623- <property name="label" translatable="yes">Screen change effect</property>
624- </widget>
625- <packing>
626- <property name="expand">False</property>
627- <property name="padding">5</property>
628- </packing>
629- </child>
630- <child>
631- <widget class="GtkComboBox" id="effect_combobox">
632- <property name="visible">True</property>
633- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
634- <property name="no_show_all">True</property>
635- <property name="items" translatable="yes">No effect
636+
637+<widget class="GtkDialog" id="PreferencesDialog">
638+ <property name="border_width">5</property>
639+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
640+ <property name="title" translatable="yes">Preferences</property>
641+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
642+ <property name="window_position">GTK_WIN_POS_CENTER</property>
643+ <property name="modal">True</property>
644+ <property name="resizable">True</property>
645+ <property name="destroy_with_parent">False</property>
646+ <property name="icon_name">gtk-preferences</property>
647+ <property name="decorated">True</property>
648+ <property name="skip_taskbar_hint">False</property>
649+ <property name="skip_pager_hint">False</property>
650+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
651+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
652+ <property name="focus_on_map">True</property>
653+ <property name="urgency_hint">False</property>
654+ <property name="has_separator">False</property>
655+ <signal name="delete_event" handler="on_PreferencesDialog_delete_event"/>
656+
657+ <child internal-child="vbox">
658+ <widget class="GtkVBox" id="dialog-vbox1">
659+ <property name="visible">True</property>
660+ <property name="homogeneous">False</property>
661+ <property name="spacing">2</property>
662+
663+ <child internal-child="action_area">
664+ <widget class="GtkHButtonBox" id="dialog-action_area1">
665+ <property name="visible">True</property>
666+ <property name="layout_style">GTK_BUTTONBOX_END</property>
667+
668+ <child>
669+ <widget class="GtkButton" id="close_button">
670+ <property name="visible">True</property>
671+ <property name="can_focus">True</property>
672+ <property name="label">gtk-close</property>
673+ <property name="use_stock">True</property>
674+ <property name="relief">GTK_RELIEF_NORMAL</property>
675+ <property name="focus_on_click">True</property>
676+ <property name="response_id">0</property>
677+ <signal name="clicked" handler="on_close_button_clicked"/>
678+ </widget>
679+ </child>
680+ </widget>
681+ <packing>
682+ <property name="padding">0</property>
683+ <property name="expand">False</property>
684+ <property name="fill">True</property>
685+ <property name="pack_type">GTK_PACK_END</property>
686+ </packing>
687+ </child>
688+
689+ <child>
690+ <widget class="GtkNotebook" id="notebook1">
691+ <property name="visible">True</property>
692+ <property name="can_focus">True</property>
693+ <property name="show_tabs">True</property>
694+ <property name="show_border">True</property>
695+ <property name="tab_pos">GTK_POS_TOP</property>
696+ <property name="scrollable">False</property>
697+ <property name="enable_popup">False</property>
698+
699+ <child>
700+ <widget class="GtkVBox" id="vbox4">
701+ <property name="visible">True</property>
702+ <property name="homogeneous">False</property>
703+ <property name="spacing">0</property>
704+
705+ <child>
706+ <widget class="GtkFrame" id="frame3">
707+ <property name="border_width">5</property>
708+ <property name="visible">True</property>
709+ <property name="label_xalign">0</property>
710+ <property name="label_yalign">0.5</property>
711+ <property name="shadow_type">GTK_SHADOW_NONE</property>
712+
713+ <child>
714+ <widget class="GtkAlignment" id="alignment3">
715+ <property name="visible">True</property>
716+ <property name="xalign">0.5</property>
717+ <property name="yalign">0.5</property>
718+ <property name="xscale">1</property>
719+ <property name="yscale">1</property>
720+ <property name="top_padding">0</property>
721+ <property name="bottom_padding">0</property>
722+ <property name="left_padding">12</property>
723+ <property name="right_padding">0</property>
724+
725+ <child>
726+ <widget class="GtkVBox" id="vbox5">
727+ <property name="visible">True</property>
728+ <property name="homogeneous">False</property>
729+ <property name="spacing">0</property>
730+
731+ <child>
732+ <widget class="GtkCheckButton" id="checkbutton_autostart">
733+ <property name="visible">True</property>
734+ <property name="can_focus">True</property>
735+ <property name="label" translatable="yes">Start server automatically</property>
736+ <property name="use_underline">True</property>
737+ <property name="relief">GTK_RELIEF_NORMAL</property>
738+ <property name="focus_on_click">True</property>
739+ <property name="active">False</property>
740+ <property name="inconsistent">False</property>
741+ <property name="draw_indicator">True</property>
742+ <signal name="toggled" handler="on_checkbutton_autostart_toggled"/>
743+ </widget>
744+ <packing>
745+ <property name="padding">0</property>
746+ <property name="expand">True</property>
747+ <property name="fill">True</property>
748+ </packing>
749+ </child>
750+
751+ <child>
752+ <widget class="GtkCheckButton" id="checkbutton_systray_icon">
753+ <property name="visible">True</property>
754+ <property name="can_focus">True</property>
755+ <property name="label" translatable="yes">Display system tray icon in notification area</property>
756+ <property name="use_underline">True</property>
757+ <property name="relief">GTK_RELIEF_NORMAL</property>
758+ <property name="focus_on_click">True</property>
759+ <property name="active">False</property>
760+ <property name="inconsistent">False</property>
761+ <property name="draw_indicator">True</property>
762+ <signal name="toggled" handler="on_checkbutton_systray_icon_toggled"/>
763+ </widget>
764+ <packing>
765+ <property name="padding">0</property>
766+ <property name="expand">True</property>
767+ <property name="fill">True</property>
768+ </packing>
769+ </child>
770+
771+ <child>
772+ <widget class="GtkCheckButton" id="checkbutton_fullscreen">
773+ <property name="visible">True</property>
774+ <property name="can_focus">True</property>
775+ <property name="label" translatable="yes">Start in fullscreen</property>
776+ <property name="use_underline">True</property>
777+ <property name="relief">GTK_RELIEF_NORMAL</property>
778+ <property name="focus_on_click">True</property>
779+ <property name="active">False</property>
780+ <property name="inconsistent">False</property>
781+ <property name="draw_indicator">True</property>
782+ <signal name="toggled" handler="on_checkbutton_fullscreen_toggled" last_modification_time="Sun, 08 Mar 2009 21:58:45 GMT"/>
783+ </widget>
784+ <packing>
785+ <property name="padding">0</property>
786+ <property name="expand">True</property>
787+ <property name="fill">True</property>
788+ </packing>
789+ </child>
790+ </widget>
791+ </child>
792+ </widget>
793+ </child>
794+
795+ <child>
796+ <widget class="GtkLabel" id="label15">
797+ <property name="visible">True</property>
798+ <property name="label" translatable="yes">&lt;b&gt;Server settings&lt;/b&gt;</property>
799+ <property name="use_underline">False</property>
800+ <property name="use_markup">True</property>
801+ <property name="justify">GTK_JUSTIFY_LEFT</property>
802+ <property name="wrap">False</property>
803+ <property name="selectable">False</property>
804+ <property name="xalign">0.5</property>
805+ <property name="yalign">0.5</property>
806+ <property name="xpad">0</property>
807+ <property name="ypad">0</property>
808+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
809+ <property name="width_chars">-1</property>
810+ <property name="single_line_mode">False</property>
811+ <property name="angle">0</property>
812+ </widget>
813+ <packing>
814+ <property name="type">label_item</property>
815+ </packing>
816+ </child>
817+ </widget>
818+ <packing>
819+ <property name="padding">5</property>
820+ <property name="expand">True</property>
821+ <property name="fill">True</property>
822+ </packing>
823+ </child>
824+
825+ <child>
826+ <widget class="GtkFrame" id="frame4">
827+ <property name="border_width">5</property>
828+ <property name="label_xalign">0</property>
829+ <property name="label_yalign">0.5</property>
830+ <property name="shadow_type">GTK_SHADOW_NONE</property>
831+
832+ <child>
833+ <widget class="GtkAlignment" id="alignment4">
834+ <property name="visible">True</property>
835+ <property name="xalign">0.5</property>
836+ <property name="yalign">0.5</property>
837+ <property name="xscale">1</property>
838+ <property name="yscale">1</property>
839+ <property name="top_padding">0</property>
840+ <property name="bottom_padding">0</property>
841+ <property name="left_padding">12</property>
842+ <property name="right_padding">0</property>
843+
844+ <child>
845+ <widget class="GtkVBox" id="vbox6">
846+ <property name="visible">True</property>
847+ <property name="homogeneous">False</property>
848+ <property name="spacing">0</property>
849+
850+ <child>
851+ <widget class="GtkHBox" id="hbox9">
852+ <property name="visible">True</property>
853+ <property name="homogeneous">False</property>
854+ <property name="spacing">0</property>
855+
856+ <child>
857+ <widget class="GtkSpinButton" id="spinbutton1">
858+ <property name="visible">True</property>
859+ <property name="can_focus">True</property>
860+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
861+ <property name="climb_rate">1</property>
862+ <property name="digits">0</property>
863+ <property name="numeric">False</property>
864+ <property name="update_policy">GTK_UPDATE_ALWAYS</property>
865+ <property name="snap_to_ticks">False</property>
866+ <property name="wrap">False</property>
867+ <property name="adjustment">0 0 100 1 10 0</property>
868+ </widget>
869+ <packing>
870+ <property name="padding">0</property>
871+ <property name="expand">False</property>
872+ <property name="fill">True</property>
873+ </packing>
874+ </child>
875+
876+ <child>
877+ <widget class="GtkLabel" id="label26">
878+ <property name="visible">True</property>
879+ <property name="label" translatable="yes">Screen history size</property>
880+ <property name="use_underline">False</property>
881+ <property name="use_markup">False</property>
882+ <property name="justify">GTK_JUSTIFY_LEFT</property>
883+ <property name="wrap">False</property>
884+ <property name="selectable">False</property>
885+ <property name="xalign">0.5</property>
886+ <property name="yalign">0.5</property>
887+ <property name="xpad">0</property>
888+ <property name="ypad">0</property>
889+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
890+ <property name="width_chars">-1</property>
891+ <property name="single_line_mode">False</property>
892+ <property name="angle">0</property>
893+ </widget>
894+ <packing>
895+ <property name="padding">5</property>
896+ <property name="expand">False</property>
897+ <property name="fill">True</property>
898+ </packing>
899+ </child>
900+ </widget>
901+ <packing>
902+ <property name="padding">0</property>
903+ <property name="expand">True</property>
904+ <property name="fill">True</property>
905+ </packing>
906+ </child>
907+
908+ <child>
909+ <placeholder/>
910+ </child>
911+
912+ <child>
913+ <placeholder/>
914+ </child>
915+ </widget>
916+ </child>
917+ </widget>
918+ </child>
919+
920+ <child>
921+ <widget class="GtkLabel" id="label16">
922+ <property name="visible">True</property>
923+ <property name="label" translatable="yes">&lt;b&gt;What comes here?&lt;/b&gt;</property>
924+ <property name="use_underline">False</property>
925+ <property name="use_markup">True</property>
926+ <property name="justify">GTK_JUSTIFY_LEFT</property>
927+ <property name="wrap">False</property>
928+ <property name="selectable">False</property>
929+ <property name="xalign">0.5</property>
930+ <property name="yalign">0.5</property>
931+ <property name="xpad">0</property>
932+ <property name="ypad">0</property>
933+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
934+ <property name="width_chars">-1</property>
935+ <property name="single_line_mode">False</property>
936+ <property name="angle">0</property>
937+ </widget>
938+ <packing>
939+ <property name="type">label_item</property>
940+ </packing>
941+ </child>
942+ </widget>
943+ <packing>
944+ <property name="padding">5</property>
945+ <property name="expand">True</property>
946+ <property name="fill">True</property>
947+ </packing>
948+ </child>
949+ </widget>
950+ <packing>
951+ <property name="tab_expand">False</property>
952+ <property name="tab_fill">True</property>
953+ </packing>
954+ </child>
955+
956+ <child>
957+ <widget class="GtkLabel" id="label1">
958+ <property name="visible">True</property>
959+ <property name="label" translatable="yes">General</property>
960+ <property name="use_underline">False</property>
961+ <property name="use_markup">False</property>
962+ <property name="justify">GTK_JUSTIFY_LEFT</property>
963+ <property name="wrap">False</property>
964+ <property name="selectable">False</property>
965+ <property name="xalign">0.5</property>
966+ <property name="yalign">0.5</property>
967+ <property name="xpad">0</property>
968+ <property name="ypad">0</property>
969+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
970+ <property name="width_chars">-1</property>
971+ <property name="single_line_mode">False</property>
972+ <property name="angle">0</property>
973+ </widget>
974+ <packing>
975+ <property name="type">tab</property>
976+ </packing>
977+ </child>
978+
979+ <child>
980+ <widget class="GtkVBox" id="vbox_user_interface">
981+ <property name="visible">True</property>
982+ <property name="homogeneous">False</property>
983+ <property name="spacing">0</property>
984+
985+ <child>
986+ <widget class="GtkFrame" id="frame_effects">
987+ <property name="border_width">5</property>
988+ <property name="visible">True</property>
989+ <property name="label_xalign">0</property>
990+ <property name="label_yalign">0.5</property>
991+ <property name="shadow_type">GTK_SHADOW_NONE</property>
992+
993+ <child>
994+ <widget class="GtkAlignment" id="alignment5">
995+ <property name="visible">True</property>
996+ <property name="xalign">0.5</property>
997+ <property name="yalign">0.5</property>
998+ <property name="xscale">1</property>
999+ <property name="yscale">1</property>
1000+ <property name="top_padding">0</property>
1001+ <property name="bottom_padding">0</property>
1002+ <property name="left_padding">12</property>
1003+ <property name="right_padding">0</property>
1004+
1005+ <child>
1006+ <widget class="GtkVBox" id="vbox7">
1007+ <property name="visible">True</property>
1008+ <property name="homogeneous">False</property>
1009+ <property name="spacing">0</property>
1010+
1011+ <child>
1012+ <widget class="GtkCheckButton" id="effect_checkbox">
1013+ <property name="visible">True</property>
1014+ <property name="can_focus">True</property>
1015+ <property name="label" translatable="yes">Show user interface effects</property>
1016+ <property name="use_underline">True</property>
1017+ <property name="relief">GTK_RELIEF_NORMAL</property>
1018+ <property name="focus_on_click">True</property>
1019+ <property name="active">False</property>
1020+ <property name="inconsistent">False</property>
1021+ <property name="draw_indicator">True</property>
1022+ <signal name="toggled" handler="on_effect_checkbox_toggled"/>
1023+ </widget>
1024+ <packing>
1025+ <property name="padding">5</property>
1026+ <property name="expand">True</property>
1027+ <property name="fill">True</property>
1028+ </packing>
1029+ </child>
1030+
1031+ <child>
1032+ <widget class="GtkHBox" id="hbox1">
1033+ <property name="visible">True</property>
1034+ <property name="homogeneous">False</property>
1035+ <property name="spacing">0</property>
1036+
1037+ <child>
1038+ <widget class="GtkLabel" id="label19">
1039+ <property name="visible">True</property>
1040+ <property name="label" translatable="yes">Screen change effect</property>
1041+ <property name="use_underline">False</property>
1042+ <property name="use_markup">False</property>
1043+ <property name="justify">GTK_JUSTIFY_LEFT</property>
1044+ <property name="wrap">False</property>
1045+ <property name="selectable">False</property>
1046+ <property name="xalign">0</property>
1047+ <property name="yalign">0.5</property>
1048+ <property name="xpad">0</property>
1049+ <property name="ypad">0</property>
1050+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
1051+ <property name="width_chars">-1</property>
1052+ <property name="single_line_mode">False</property>
1053+ <property name="angle">0</property>
1054+ </widget>
1055+ <packing>
1056+ <property name="padding">5</property>
1057+ <property name="expand">False</property>
1058+ <property name="fill">True</property>
1059+ </packing>
1060+ </child>
1061+
1062+ <child>
1063+ <widget class="GtkComboBox" id="effect_combobox">
1064+ <property name="visible">True</property>
1065+ <property name="items" translatable="yes">No effect
1066 Crossfade
1067 Zoom and fade
1068 Slide</property>
1069- <signal name="changed" handler="on_effect_combobox_changed"/>
1070- </widget>
1071- <packing>
1072- <property name="position">1</property>
1073- </packing>
1074- </child>
1075- </widget>
1076- <packing>
1077- <property name="position">1</property>
1078- </packing>
1079- </child>
1080- </widget>
1081- </child>
1082- </widget>
1083- </child>
1084- <child>
1085- <widget class="GtkLabel" id="label17">
1086- <property name="visible">True</property>
1087- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1088- <property name="label" translatable="yes">&lt;b&gt;Effects&lt;/b&gt;</property>
1089- <property name="use_markup">True</property>
1090- </widget>
1091- <packing>
1092- <property name="type">label_item</property>
1093- </packing>
1094- </child>
1095- </widget>
1096- <packing>
1097- <property name="expand">False</property>
1098- <property name="padding">5</property>
1099- </packing>
1100- </child>
1101- <child>
1102- <widget class="GtkFrame" id="frame_themes">
1103- <property name="visible">True</property>
1104- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1105- <property name="border_width">5</property>
1106- <property name="label_xalign">0</property>
1107- <property name="shadow_type">GTK_SHADOW_NONE</property>
1108- <child>
1109- <widget class="GtkAlignment" id="alignment6">
1110- <property name="visible">True</property>
1111- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1112- <property name="left_padding">12</property>
1113- <child>
1114- <widget class="GtkHBox" id="hbox2">
1115- <property name="visible">True</property>
1116- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1117- <child>
1118- <widget class="GtkScrolledWindow" id="scrolledwindow1">
1119- <property name="visible">True</property>
1120- <property name="can_focus">True</property>
1121- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1122- <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
1123- <property name="shadow_type">GTK_SHADOW_IN</property>
1124- <child>
1125- <widget class="GtkTreeView" id="theme_list">
1126- <property name="visible">True</property>
1127- <property name="can_focus">True</property>
1128- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1129- <property name="headers_visible">False</property>
1130- <property name="enable_search">False</property>
1131- <signal name="cursor_changed" handler="on_theme_list_cursor_changed"/>
1132- </widget>
1133- </child>
1134- </widget>
1135- </child>
1136- <child>
1137- <widget class="GtkVButtonBox" id="vbuttonbox1">
1138- <property name="visible">True</property>
1139- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1140- <property name="spacing">5</property>
1141- <property name="layout_style">GTK_BUTTONBOX_START</property>
1142- <child>
1143- <widget class="GtkButton" id="add_button">
1144- <property name="visible">True</property>
1145- <property name="can_focus">True</property>
1146- <property name="receives_default">True</property>
1147- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1148- <property name="label" translatable="yes">gtk-add</property>
1149- <property name="use_stock">True</property>
1150- <property name="response_id">0</property>
1151- <signal name="clicked" handler="on_add_button_clicked"/>
1152- </widget>
1153- </child>
1154- <child>
1155- <widget class="GtkButton" id="remove_button">
1156- <property name="visible">True</property>
1157- <property name="can_focus">True</property>
1158- <property name="receives_default">True</property>
1159- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1160- <property name="label" translatable="yes">gtk-remove</property>
1161- <property name="use_stock">True</property>
1162- <property name="response_id">0</property>
1163- <signal name="clicked" handler="on_remove_button_clicked"/>
1164- </widget>
1165- <packing>
1166- <property name="position">1</property>
1167- </packing>
1168- </child>
1169- </widget>
1170- <packing>
1171- <property name="expand">False</property>
1172- <property name="padding">10</property>
1173- <property name="position">1</property>
1174- </packing>
1175- </child>
1176- </widget>
1177- </child>
1178- </widget>
1179- </child>
1180- <child>
1181- <widget class="GtkLabel" id="label18">
1182- <property name="visible">True</property>
1183- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1184- <property name="ypad">5</property>
1185- <property name="label" translatable="yes">&lt;b&gt;Themes&lt;/b&gt;</property>
1186- <property name="use_markup">True</property>
1187- </widget>
1188- <packing>
1189- <property name="type">label_item</property>
1190- </packing>
1191- </child>
1192- </widget>
1193- <packing>
1194- <property name="padding">5</property>
1195- <property name="position">1</property>
1196- </packing>
1197- </child>
1198- <child>
1199- <widget class="GtkFrame" id="frame_theme_information">
1200- <property name="visible">True</property>
1201- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1202- <property name="border_width">5</property>
1203- <property name="label_xalign">0</property>
1204- <property name="shadow_type">GTK_SHADOW_NONE</property>
1205- <child>
1206- <widget class="GtkAlignment" id="alignment7">
1207- <property name="visible">True</property>
1208- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1209- <property name="left_padding">12</property>
1210- <child>
1211- <widget class="GtkHBox" id="hbox3">
1212- <property name="visible">True</property>
1213- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1214- <child>
1215- <widget class="GtkImage" id="theme_image">
1216- <property name="visible">True</property>
1217- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1218- <property name="stock">gtk-missing-image</property>
1219- </widget>
1220- <packing>
1221- <property name="expand">False</property>
1222- <property name="fill">False</property>
1223- </packing>
1224- </child>
1225- <child>
1226- <widget class="GtkVBox" id="vbox8">
1227- <property name="visible">True</property>
1228- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1229- <child>
1230- <widget class="GtkHBox" id="hbox4">
1231- <property name="visible">True</property>
1232- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1233- <child>
1234- <widget class="GtkLabel" id="label21">
1235- <property name="visible">True</property>
1236- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1237- <property name="xalign">0</property>
1238- <property name="ypad">5</property>
1239- <property name="label" translatable="yes">&lt;b&gt;Name:&lt;/b&gt;</property>
1240- <property name="use_markup">True</property>
1241- </widget>
1242- <packing>
1243- <property name="expand">False</property>
1244- <property name="padding">5</property>
1245- </packing>
1246- </child>
1247- <child>
1248- <widget class="GtkLabel" id="name_label">
1249- <property name="visible">True</property>
1250- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1251- <property name="xalign">0</property>
1252- </widget>
1253- <packing>
1254- <property name="position">1</property>
1255- </packing>
1256- </child>
1257- </widget>
1258- </child>
1259- <child>
1260- <widget class="GtkHBox" id="hbox5">
1261- <property name="visible">True</property>
1262- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1263- <child>
1264- <widget class="GtkLabel" id="label22">
1265- <property name="visible">True</property>
1266- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1267- <property name="xalign">0</property>
1268- <property name="ypad">5</property>
1269- <property name="label" translatable="yes">&lt;b&gt;Author:&lt;/b&gt;</property>
1270- <property name="use_markup">True</property>
1271- </widget>
1272- <packing>
1273- <property name="expand">False</property>
1274- <property name="padding">5</property>
1275- </packing>
1276- </child>
1277- <child>
1278- <widget class="GtkLabel" id="author_label">
1279- <property name="visible">True</property>
1280- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1281- <property name="xalign">0</property>
1282- </widget>
1283- <packing>
1284- <property name="position">1</property>
1285- </packing>
1286- </child>
1287- </widget>
1288- <packing>
1289- <property name="position">1</property>
1290- </packing>
1291- </child>
1292- <child>
1293- <widget class="GtkHBox" id="hbox6">
1294- <property name="visible">True</property>
1295- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1296- <child>
1297- <widget class="GtkLabel" id="label23">
1298- <property name="visible">True</property>
1299- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1300- <property name="xalign">0</property>
1301- <property name="ypad">5</property>
1302- <property name="label" translatable="yes">&lt;b&gt;Licence:&lt;/b&gt;</property>
1303- <property name="use_markup">True</property>
1304- </widget>
1305- <packing>
1306- <property name="expand">False</property>
1307- <property name="padding">5</property>
1308- </packing>
1309- </child>
1310- <child>
1311- <widget class="GtkLabel" id="licence_label">
1312- <property name="visible">True</property>
1313- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1314- <property name="xalign">0</property>
1315- </widget>
1316- <packing>
1317- <property name="position">1</property>
1318- </packing>
1319- </child>
1320- </widget>
1321- <packing>
1322- <property name="position">2</property>
1323- </packing>
1324- </child>
1325- <child>
1326- <widget class="GtkHBox" id="hbox8">
1327- <property name="visible">True</property>
1328- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1329- <child>
1330- <widget class="GtkLabel" id="label24">
1331- <property name="visible">True</property>
1332- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1333- <property name="xalign">0</property>
1334- <property name="ypad">5</property>
1335- <property name="label" translatable="yes">&lt;b&gt;Copyright:&lt;/b&gt;</property>
1336- <property name="use_markup">True</property>
1337- </widget>
1338- <packing>
1339- <property name="expand">False</property>
1340- <property name="padding">5</property>
1341- </packing>
1342- </child>
1343- <child>
1344- <widget class="GtkLabel" id="copyright_label">
1345- <property name="visible">True</property>
1346- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1347- <property name="xalign">0</property>
1348- </widget>
1349- <packing>
1350- <property name="position">1</property>
1351- </packing>
1352- </child>
1353- </widget>
1354- <packing>
1355- <property name="position">3</property>
1356- </packing>
1357- </child>
1358- <child>
1359- <widget class="GtkHBox" id="hbox7">
1360- <property name="visible">True</property>
1361- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1362- <child>
1363- <widget class="GtkLabel" id="label25">
1364- <property name="visible">True</property>
1365- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1366- <property name="xalign">0</property>
1367- <property name="ypad">5</property>
1368- <property name="label" translatable="yes">&lt;b&gt;Comment:&lt;/b&gt;</property>
1369- <property name="use_markup">True</property>
1370- </widget>
1371- <packing>
1372- <property name="expand">False</property>
1373- <property name="padding">5</property>
1374- </packing>
1375- </child>
1376- <child>
1377- <widget class="GtkLabel" id="comment_label">
1378- <property name="visible">True</property>
1379- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1380- <property name="xalign">0</property>
1381- <property name="wrap">True</property>
1382- </widget>
1383- <packing>
1384- <property name="position">1</property>
1385- </packing>
1386- </child>
1387- </widget>
1388- <packing>
1389- <property name="position">4</property>
1390- </packing>
1391- </child>
1392- </widget>
1393- <packing>
1394- <property name="position">1</property>
1395- </packing>
1396- </child>
1397- </widget>
1398- </child>
1399- </widget>
1400- </child>
1401- <child>
1402- <widget class="GtkLabel" id="label20">
1403- <property name="visible">True</property>
1404- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1405- <property name="ypad">5</property>
1406- <property name="label" translatable="yes">&lt;b&gt;Theme information&lt;/b&gt;</property>
1407- <property name="use_markup">True</property>
1408- </widget>
1409- <packing>
1410- <property name="type">label_item</property>
1411- </packing>
1412- </child>
1413- </widget>
1414- <packing>
1415- <property name="expand">False</property>
1416- <property name="position">2</property>
1417- </packing>
1418- </child>
1419- </widget>
1420- <packing>
1421- <property name="position">1</property>
1422- </packing>
1423- </child>
1424- <child>
1425- <widget class="GtkLabel" id="label2">
1426- <property name="visible">True</property>
1427- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1428- <property name="label" translatable="yes">User interface</property>
1429- </widget>
1430- <packing>
1431- <property name="type">tab</property>
1432- <property name="position">1</property>
1433- <property name="tab_fill">False</property>
1434- </packing>
1435- </child>
1436- <child>
1437- <widget class="GtkVBox" id="vbox_photographs">
1438- <property name="visible">True</property>
1439- <child>
1440- <widget class="GtkFrame" id="fphotographs">
1441- <property name="visible">True</property>
1442- <property name="label_xalign">0</property>
1443- <property name="shadow_type">GTK_SHADOW_NONE</property>
1444- <child>
1445- <widget class="GtkAlignment" id="aphotographs1">
1446- <property name="visible">True</property>
1447- <property name="left_padding">12</property>
1448- <child>
1449- <widget class="GtkVBox" id="vbox10">
1450- <property name="visible">True</property>
1451- <child>
1452- <widget class="GtkHBox" id="hbphotographs">
1453- <property name="visible">True</property>
1454- <child>
1455- <widget class="GtkSpinButton" id="spinbutton_slideshow_step">
1456- <property name="visible">True</property>
1457- <property name="can_focus">True</property>
1458- <property name="editable">False</property>
1459- <property name="adjustment">5 1 100 1 10 0</property>
1460- <property name="snap_to_ticks">True</property>
1461- <property name="numeric">True</property>
1462- <signal name="value_changed" handler="on_spinbutton_slideshow_step_value_changed"/>
1463- </widget>
1464- </child>
1465- <child>
1466- <widget class="GtkLabel" id="lslideshowstep">
1467- <property name="visible">True</property>
1468- <property name="label" translatable="yes">Slideshow step (in seconds)</property>
1469- </widget>
1470- <packing>
1471- <property name="position">1</property>
1472- </packing>
1473- </child>
1474- </widget>
1475- <packing>
1476- <property name="expand">False</property>
1477- </packing>
1478- </child>
1479- </widget>
1480- </child>
1481- </widget>
1482- </child>
1483- <child>
1484- <widget class="GtkLabel" id="lslideshow">
1485- <property name="visible">True</property>
1486- <property name="label" translatable="yes">&lt;b&gt;Slideshow&lt;/b&gt;</property>
1487- <property name="use_markup">True</property>
1488- </widget>
1489- <packing>
1490- <property name="type">label_item</property>
1491- </packing>
1492- </child>
1493- </widget>
1494- <packing>
1495- <property name="padding">5</property>
1496- </packing>
1497- </child>
1498- <child>
1499- <placeholder/>
1500- </child>
1501- <child>
1502- <placeholder/>
1503- </child>
1504- </widget>
1505- <packing>
1506- <property name="position">2</property>
1507- </packing>
1508- </child>
1509- <child>
1510- <widget class="GtkLabel" id="LPhotographs">
1511- <property name="visible">True</property>
1512- <property name="label" translatable="yes">Photographs</property>
1513- </widget>
1514- <packing>
1515- <property name="type">tab</property>
1516- <property name="position">2</property>
1517- <property name="tab_fill">False</property>
1518- </packing>
1519- </child>
1520- </widget>
1521- <packing>
1522- <property name="position">1</property>
1523- </packing>
1524- </child>
1525- <child internal-child="action_area">
1526- <widget class="GtkHButtonBox" id="dialog-action_area1">
1527- <property name="visible">True</property>
1528- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1529- <property name="layout_style">GTK_BUTTONBOX_END</property>
1530- <child>
1531- <widget class="GtkButton" id="close_button">
1532- <property name="visible">True</property>
1533- <property name="can_focus">True</property>
1534- <property name="receives_default">True</property>
1535- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1536- <property name="label" translatable="yes">gtk-close</property>
1537- <property name="use_stock">True</property>
1538- <property name="response_id">0</property>
1539- <signal name="clicked" handler="on_close_button_clicked"/>
1540- </widget>
1541- </child>
1542- </widget>
1543- <packing>
1544- <property name="expand">False</property>
1545- <property name="pack_type">GTK_PACK_END</property>
1546- </packing>
1547- </child>
1548- </widget>
1549- </child>
1550- </widget>
1551+ <property name="add_tearoffs">False</property>
1552+ <property name="focus_on_click">True</property>
1553+ <signal name="changed" handler="on_effect_combobox_changed"/>
1554+ </widget>
1555+ <packing>
1556+ <property name="padding">0</property>
1557+ <property name="expand">True</property>
1558+ <property name="fill">True</property>
1559+ </packing>
1560+ </child>
1561+ </widget>
1562+ <packing>
1563+ <property name="padding">0</property>
1564+ <property name="expand">True</property>
1565+ <property name="fill">True</property>
1566+ </packing>
1567+ </child>
1568+ </widget>
1569+ </child>
1570+ </widget>
1571+ </child>
1572+
1573+ <child>
1574+ <widget class="GtkLabel" id="label17">
1575+ <property name="visible">True</property>
1576+ <property name="label" translatable="yes">&lt;b&gt;Effects&lt;/b&gt;</property>
1577+ <property name="use_underline">False</property>
1578+ <property name="use_markup">True</property>
1579+ <property name="justify">GTK_JUSTIFY_LEFT</property>
1580+ <property name="wrap">False</property>
1581+ <property name="selectable">False</property>
1582+ <property name="xalign">0.5</property>
1583+ <property name="yalign">0.5</property>
1584+ <property name="xpad">0</property>
1585+ <property name="ypad">0</property>
1586+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
1587+ <property name="width_chars">-1</property>
1588+ <property name="single_line_mode">False</property>
1589+ <property name="angle">0</property>
1590+ </widget>
1591+ <packing>
1592+ <property name="type">label_item</property>
1593+ </packing>
1594+ </child>
1595+ </widget>
1596+ <packing>
1597+ <property name="padding">5</property>
1598+ <property name="expand">False</property>
1599+ <property name="fill">True</property>
1600+ </packing>
1601+ </child>
1602+
1603+ <child>
1604+ <widget class="GtkFrame" id="frame_themes">
1605+ <property name="border_width">5</property>
1606+ <property name="visible">True</property>
1607+ <property name="label_xalign">0</property>
1608+ <property name="label_yalign">0.5</property>
1609+ <property name="shadow_type">GTK_SHADOW_NONE</property>
1610+
1611+ <child>
1612+ <widget class="GtkAlignment" id="alignment6">
1613+ <property name="visible">True</property>
1614+ <property name="xalign">0.5</property>
1615+ <property name="yalign">0.5</property>
1616+ <property name="xscale">1</property>
1617+ <property name="yscale">1</property>
1618+ <property name="top_padding">0</property>
1619+ <property name="bottom_padding">0</property>
1620+ <property name="left_padding">12</property>
1621+ <property name="right_padding">0</property>
1622+
1623+ <child>
1624+ <widget class="GtkHBox" id="hbox2">
1625+ <property name="visible">True</property>
1626+ <property name="homogeneous">False</property>
1627+ <property name="spacing">0</property>
1628+
1629+ <child>
1630+ <widget class="GtkScrolledWindow" id="scrolledwindow1">
1631+ <property name="visible">True</property>
1632+ <property name="can_focus">True</property>
1633+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
1634+ <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
1635+ <property name="shadow_type">GTK_SHADOW_IN</property>
1636+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
1637+
1638+ <child>
1639+ <widget class="GtkTreeView" id="theme_list">
1640+ <property name="visible">True</property>
1641+ <property name="can_focus">True</property>
1642+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1643+ <property name="headers_visible">False</property>
1644+ <property name="rules_hint">False</property>
1645+ <property name="reorderable">False</property>
1646+ <property name="enable_search">False</property>
1647+ <property name="fixed_height_mode">False</property>
1648+ <property name="hover_selection">False</property>
1649+ <property name="hover_expand">False</property>
1650+ <signal name="cursor_changed" handler="on_theme_list_cursor_changed"/>
1651+ </widget>
1652+ </child>
1653+ </widget>
1654+ <packing>
1655+ <property name="padding">0</property>
1656+ <property name="expand">True</property>
1657+ <property name="fill">True</property>
1658+ </packing>
1659+ </child>
1660+
1661+ <child>
1662+ <widget class="GtkVButtonBox" id="vbuttonbox1">
1663+ <property name="visible">True</property>
1664+ <property name="layout_style">GTK_BUTTONBOX_START</property>
1665+ <property name="spacing">5</property>
1666+
1667+ <child>
1668+ <widget class="GtkButton" id="add_button">
1669+ <property name="visible">True</property>
1670+ <property name="can_focus">True</property>
1671+ <property name="label">gtk-add</property>
1672+ <property name="use_stock">True</property>
1673+ <property name="relief">GTK_RELIEF_NORMAL</property>
1674+ <property name="focus_on_click">True</property>
1675+ <signal name="clicked" handler="on_add_button_clicked"/>
1676+ </widget>
1677+ </child>
1678+
1679+ <child>
1680+ <widget class="GtkButton" id="remove_button">
1681+ <property name="visible">True</property>
1682+ <property name="can_focus">True</property>
1683+ <property name="label">gtk-remove</property>
1684+ <property name="use_stock">True</property>
1685+ <property name="relief">GTK_RELIEF_NORMAL</property>
1686+ <property name="focus_on_click">True</property>
1687+ <signal name="clicked" handler="on_remove_button_clicked"/>
1688+ </widget>
1689+ </child>
1690+ </widget>
1691+ <packing>
1692+ <property name="padding">10</property>
1693+ <property name="expand">False</property>
1694+ <property name="fill">True</property>
1695+ </packing>
1696+ </child>
1697+ </widget>
1698+ </child>
1699+ </widget>
1700+ </child>
1701+
1702+ <child>
1703+ <widget class="GtkLabel" id="label18">
1704+ <property name="visible">True</property>
1705+ <property name="label" translatable="yes">&lt;b&gt;Themes&lt;/b&gt;</property>
1706+ <property name="use_underline">False</property>
1707+ <property name="use_markup">True</property>
1708+ <property name="justify">GTK_JUSTIFY_LEFT</property>
1709+ <property name="wrap">False</property>
1710+ <property name="selectable">False</property>
1711+ <property name="xalign">0.5</property>
1712+ <property name="yalign">0.5</property>
1713+ <property name="xpad">0</property>
1714+ <property name="ypad">5</property>
1715+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
1716+ <property name="width_chars">-1</property>
1717+ <property name="single_line_mode">False</property>
1718+ <property name="angle">0</property>
1719+ </widget>
1720+ <packing>
1721+ <property name="type">label_item</property>
1722+ </packing>
1723+ </child>
1724+ </widget>
1725+ <packing>
1726+ <property name="padding">5</property>
1727+ <property name="expand">True</property>
1728+ <property name="fill">True</property>
1729+ </packing>
1730+ </child>
1731+
1732+ <child>
1733+ <widget class="GtkFrame" id="frame_theme_information">
1734+ <property name="border_width">5</property>
1735+ <property name="visible">True</property>
1736+ <property name="label_xalign">0</property>
1737+ <property name="label_yalign">0.5</property>
1738+ <property name="shadow_type">GTK_SHADOW_NONE</property>
1739+
1740+ <child>
1741+ <widget class="GtkAlignment" id="alignment7">
1742+ <property name="visible">True</property>
1743+ <property name="xalign">0.5</property>
1744+ <property name="yalign">0.5</property>
1745+ <property name="xscale">1</property>
1746+ <property name="yscale">1</property>
1747+ <property name="top_padding">0</property>
1748+ <property name="bottom_padding">0</property>
1749+ <property name="left_padding">12</property>
1750+ <property name="right_padding">0</property>
1751+
1752+ <child>
1753+ <widget class="GtkHBox" id="hbox3">
1754+ <property name="visible">True</property>
1755+ <property name="homogeneous">False</property>
1756+ <property name="spacing">0</property>
1757+
1758+ <child>
1759+ <widget class="GtkImage" id="theme_image">
1760+ <property name="visible">True</property>
1761+ <property name="stock">gtk-missing-image</property>
1762+ <property name="icon_size">4</property>
1763+ <property name="xalign">0.5</property>
1764+ <property name="yalign">0.5</property>
1765+ <property name="xpad">0</property>
1766+ <property name="ypad">0</property>
1767+ </widget>
1768+ <packing>
1769+ <property name="padding">0</property>
1770+ <property name="expand">False</property>
1771+ <property name="fill">False</property>
1772+ </packing>
1773+ </child>
1774+
1775+ <child>
1776+ <widget class="GtkVBox" id="vbox8">
1777+ <property name="visible">True</property>
1778+ <property name="homogeneous">False</property>
1779+ <property name="spacing">0</property>
1780+
1781+ <child>
1782+ <widget class="GtkHBox" id="hbox4">
1783+ <property name="visible">True</property>
1784+ <property name="homogeneous">False</property>
1785+ <property name="spacing">0</property>
1786+
1787+ <child>
1788+ <widget class="GtkLabel" id="label21">
1789+ <property name="visible">True</property>
1790+ <property name="label" translatable="yes">&lt;b&gt;Name:&lt;/b&gt;</property>
1791+ <property name="use_underline">False</property>
1792+ <property name="use_markup">True</property>
1793+ <property name="justify">GTK_JUSTIFY_LEFT</property>
1794+ <property name="wrap">False</property>
1795+ <property name="selectable">False</property>
1796+ <property name="xalign">0</property>
1797+ <property name="yalign">0.5</property>
1798+ <property name="xpad">0</property>
1799+ <property name="ypad">5</property>
1800+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
1801+ <property name="width_chars">-1</property>
1802+ <property name="single_line_mode">False</property>
1803+ <property name="angle">0</property>
1804+ </widget>
1805+ <packing>
1806+ <property name="padding">5</property>
1807+ <property name="expand">False</property>
1808+ <property name="fill">True</property>
1809+ </packing>
1810+ </child>
1811+
1812+ <child>
1813+ <widget class="GtkLabel" id="name_label">
1814+ <property name="visible">True</property>
1815+ <property name="label" translatable="yes"></property>
1816+ <property name="use_underline">False</property>
1817+ <property name="use_markup">False</property>
1818+ <property name="justify">GTK_JUSTIFY_LEFT</property>
1819+ <property name="wrap">False</property>
1820+ <property name="selectable">False</property>
1821+ <property name="xalign">0</property>
1822+ <property name="yalign">0.5</property>
1823+ <property name="xpad">0</property>
1824+ <property name="ypad">0</property>
1825+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
1826+ <property name="width_chars">-1</property>
1827+ <property name="single_line_mode">False</property>
1828+ <property name="angle">0</property>
1829+ </widget>
1830+ <packing>
1831+ <property name="padding">0</property>
1832+ <property name="expand">True</property>
1833+ <property name="fill">True</property>
1834+ </packing>
1835+ </child>
1836+ </widget>
1837+ <packing>
1838+ <property name="padding">0</property>
1839+ <property name="expand">True</property>
1840+ <property name="fill">True</property>
1841+ </packing>
1842+ </child>
1843+
1844+ <child>
1845+ <widget class="GtkHBox" id="hbox5">
1846+ <property name="visible">True</property>
1847+ <property name="homogeneous">False</property>
1848+ <property name="spacing">0</property>
1849+
1850+ <child>
1851+ <widget class="GtkLabel" id="label22">
1852+ <property name="visible">True</property>
1853+ <property name="label" translatable="yes">&lt;b&gt;Author:&lt;/b&gt;</property>
1854+ <property name="use_underline">False</property>
1855+ <property name="use_markup">True</property>
1856+ <property name="justify">GTK_JUSTIFY_LEFT</property>
1857+ <property name="wrap">False</property>
1858+ <property name="selectable">False</property>
1859+ <property name="xalign">0</property>
1860+ <property name="yalign">0.5</property>
1861+ <property name="xpad">0</property>
1862+ <property name="ypad">5</property>
1863+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
1864+ <property name="width_chars">-1</property>
1865+ <property name="single_line_mode">False</property>
1866+ <property name="angle">0</property>
1867+ </widget>
1868+ <packing>
1869+ <property name="padding">5</property>
1870+ <property name="expand">False</property>
1871+ <property name="fill">True</property>
1872+ </packing>
1873+ </child>
1874+
1875+ <child>
1876+ <widget class="GtkLabel" id="author_label">
1877+ <property name="visible">True</property>
1878+ <property name="label" translatable="yes"></property>
1879+ <property name="use_underline">False</property>
1880+ <property name="use_markup">False</property>
1881+ <property name="justify">GTK_JUSTIFY_LEFT</property>
1882+ <property name="wrap">False</property>
1883+ <property name="selectable">False</property>
1884+ <property name="xalign">0</property>
1885+ <property name="yalign">0.5</property>
1886+ <property name="xpad">0</property>
1887+ <property name="ypad">0</property>
1888+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
1889+ <property name="width_chars">-1</property>
1890+ <property name="single_line_mode">False</property>
1891+ <property name="angle">0</property>
1892+ </widget>
1893+ <packing>
1894+ <property name="padding">0</property>
1895+ <property name="expand">True</property>
1896+ <property name="fill">True</property>
1897+ </packing>
1898+ </child>
1899+ </widget>
1900+ <packing>
1901+ <property name="padding">0</property>
1902+ <property name="expand">True</property>
1903+ <property name="fill">True</property>
1904+ </packing>
1905+ </child>
1906+
1907+ <child>
1908+ <widget class="GtkHBox" id="hbox6">
1909+ <property name="visible">True</property>
1910+ <property name="homogeneous">False</property>
1911+ <property name="spacing">0</property>
1912+
1913+ <child>
1914+ <widget class="GtkLabel" id="label23">
1915+ <property name="visible">True</property>
1916+ <property name="label" translatable="yes">&lt;b&gt;Licence:&lt;/b&gt;</property>
1917+ <property name="use_underline">False</property>
1918+ <property name="use_markup">True</property>
1919+ <property name="justify">GTK_JUSTIFY_LEFT</property>
1920+ <property name="wrap">False</property>
1921+ <property name="selectable">False</property>
1922+ <property name="xalign">0</property>
1923+ <property name="yalign">0.5</property>
1924+ <property name="xpad">0</property>
1925+ <property name="ypad">5</property>
1926+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
1927+ <property name="width_chars">-1</property>
1928+ <property name="single_line_mode">False</property>
1929+ <property name="angle">0</property>
1930+ </widget>
1931+ <packing>
1932+ <property name="padding">5</property>
1933+ <property name="expand">False</property>
1934+ <property name="fill">True</property>
1935+ </packing>
1936+ </child>
1937+
1938+ <child>
1939+ <widget class="GtkLabel" id="licence_label">
1940+ <property name="visible">True</property>
1941+ <property name="label" translatable="yes"></property>
1942+ <property name="use_underline">False</property>
1943+ <property name="use_markup">False</property>
1944+ <property name="justify">GTK_JUSTIFY_LEFT</property>
1945+ <property name="wrap">False</property>
1946+ <property name="selectable">False</property>
1947+ <property name="xalign">0</property>
1948+ <property name="yalign">0.5</property>
1949+ <property name="xpad">0</property>
1950+ <property name="ypad">0</property>
1951+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
1952+ <property name="width_chars">-1</property>
1953+ <property name="single_line_mode">False</property>
1954+ <property name="angle">0</property>
1955+ </widget>
1956+ <packing>
1957+ <property name="padding">0</property>
1958+ <property name="expand">True</property>
1959+ <property name="fill">True</property>
1960+ </packing>
1961+ </child>
1962+ </widget>
1963+ <packing>
1964+ <property name="padding">0</property>
1965+ <property name="expand">True</property>
1966+ <property name="fill">True</property>
1967+ </packing>
1968+ </child>
1969+
1970+ <child>
1971+ <widget class="GtkHBox" id="hbox8">
1972+ <property name="visible">True</property>
1973+ <property name="homogeneous">False</property>
1974+ <property name="spacing">0</property>
1975+
1976+ <child>
1977+ <widget class="GtkLabel" id="label24">
1978+ <property name="visible">True</property>
1979+ <property name="label" translatable="yes">&lt;b&gt;Copyright:&lt;/b&gt;</property>
1980+ <property name="use_underline">False</property>
1981+ <property name="use_markup">True</property>
1982+ <property name="justify">GTK_JUSTIFY_LEFT</property>
1983+ <property name="wrap">False</property>
1984+ <property name="selectable">False</property>
1985+ <property name="xalign">0</property>
1986+ <property name="yalign">0.5</property>
1987+ <property name="xpad">0</property>
1988+ <property name="ypad">5</property>
1989+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
1990+ <property name="width_chars">-1</property>
1991+ <property name="single_line_mode">False</property>
1992+ <property name="angle">0</property>
1993+ </widget>
1994+ <packing>
1995+ <property name="padding">5</property>
1996+ <property name="expand">False</property>
1997+ <property name="fill">True</property>
1998+ </packing>
1999+ </child>
2000+
2001+ <child>
2002+ <widget class="GtkLabel" id="copyright_label">
2003+ <property name="visible">True</property>
2004+ <property name="label" translatable="yes"></property>
2005+ <property name="use_underline">False</property>
2006+ <property name="use_markup">False</property>
2007+ <property name="justify">GTK_JUSTIFY_LEFT</property>
2008+ <property name="wrap">False</property>
2009+ <property name="selectable">False</property>
2010+ <property name="xalign">0</property>
2011+ <property name="yalign">0.5</property>
2012+ <property name="xpad">0</property>
2013+ <property name="ypad">0</property>
2014+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2015+ <property name="width_chars">-1</property>
2016+ <property name="single_line_mode">False</property>
2017+ <property name="angle">0</property>
2018+ </widget>
2019+ <packing>
2020+ <property name="padding">0</property>
2021+ <property name="expand">True</property>
2022+ <property name="fill">True</property>
2023+ </packing>
2024+ </child>
2025+ </widget>
2026+ <packing>
2027+ <property name="padding">0</property>
2028+ <property name="expand">True</property>
2029+ <property name="fill">True</property>
2030+ </packing>
2031+ </child>
2032+
2033+ <child>
2034+ <widget class="GtkHBox" id="hbox7">
2035+ <property name="visible">True</property>
2036+ <property name="homogeneous">False</property>
2037+ <property name="spacing">0</property>
2038+
2039+ <child>
2040+ <widget class="GtkLabel" id="label25">
2041+ <property name="visible">True</property>
2042+ <property name="label" translatable="yes">&lt;b&gt;Comment:&lt;/b&gt;</property>
2043+ <property name="use_underline">False</property>
2044+ <property name="use_markup">True</property>
2045+ <property name="justify">GTK_JUSTIFY_LEFT</property>
2046+ <property name="wrap">False</property>
2047+ <property name="selectable">False</property>
2048+ <property name="xalign">0</property>
2049+ <property name="yalign">0.5</property>
2050+ <property name="xpad">0</property>
2051+ <property name="ypad">5</property>
2052+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2053+ <property name="width_chars">-1</property>
2054+ <property name="single_line_mode">False</property>
2055+ <property name="angle">0</property>
2056+ </widget>
2057+ <packing>
2058+ <property name="padding">5</property>
2059+ <property name="expand">False</property>
2060+ <property name="fill">True</property>
2061+ </packing>
2062+ </child>
2063+
2064+ <child>
2065+ <widget class="GtkLabel" id="comment_label">
2066+ <property name="visible">True</property>
2067+ <property name="label" translatable="yes"></property>
2068+ <property name="use_underline">False</property>
2069+ <property name="use_markup">False</property>
2070+ <property name="justify">GTK_JUSTIFY_LEFT</property>
2071+ <property name="wrap">True</property>
2072+ <property name="selectable">False</property>
2073+ <property name="xalign">0</property>
2074+ <property name="yalign">0.5</property>
2075+ <property name="xpad">0</property>
2076+ <property name="ypad">0</property>
2077+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2078+ <property name="width_chars">-1</property>
2079+ <property name="single_line_mode">False</property>
2080+ <property name="angle">0</property>
2081+ </widget>
2082+ <packing>
2083+ <property name="padding">0</property>
2084+ <property name="expand">True</property>
2085+ <property name="fill">True</property>
2086+ </packing>
2087+ </child>
2088+ </widget>
2089+ <packing>
2090+ <property name="padding">0</property>
2091+ <property name="expand">True</property>
2092+ <property name="fill">True</property>
2093+ </packing>
2094+ </child>
2095+ </widget>
2096+ <packing>
2097+ <property name="padding">0</property>
2098+ <property name="expand">True</property>
2099+ <property name="fill">True</property>
2100+ </packing>
2101+ </child>
2102+ </widget>
2103+ </child>
2104+ </widget>
2105+ </child>
2106+
2107+ <child>
2108+ <widget class="GtkLabel" id="label20">
2109+ <property name="visible">True</property>
2110+ <property name="label" translatable="yes">&lt;b&gt;Theme information&lt;/b&gt;</property>
2111+ <property name="use_underline">False</property>
2112+ <property name="use_markup">True</property>
2113+ <property name="justify">GTK_JUSTIFY_LEFT</property>
2114+ <property name="wrap">False</property>
2115+ <property name="selectable">False</property>
2116+ <property name="xalign">0.5</property>
2117+ <property name="yalign">0.5</property>
2118+ <property name="xpad">0</property>
2119+ <property name="ypad">5</property>
2120+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2121+ <property name="width_chars">-1</property>
2122+ <property name="single_line_mode">False</property>
2123+ <property name="angle">0</property>
2124+ </widget>
2125+ <packing>
2126+ <property name="type">label_item</property>
2127+ </packing>
2128+ </child>
2129+ </widget>
2130+ <packing>
2131+ <property name="padding">0</property>
2132+ <property name="expand">False</property>
2133+ <property name="fill">True</property>
2134+ </packing>
2135+ </child>
2136+ </widget>
2137+ <packing>
2138+ <property name="tab_expand">False</property>
2139+ <property name="tab_fill">True</property>
2140+ </packing>
2141+ </child>
2142+
2143+ <child>
2144+ <widget class="GtkLabel" id="label2">
2145+ <property name="visible">True</property>
2146+ <property name="label" translatable="yes">User interface</property>
2147+ <property name="use_underline">False</property>
2148+ <property name="use_markup">False</property>
2149+ <property name="justify">GTK_JUSTIFY_LEFT</property>
2150+ <property name="wrap">False</property>
2151+ <property name="selectable">False</property>
2152+ <property name="xalign">0.5</property>
2153+ <property name="yalign">0.5</property>
2154+ <property name="xpad">0</property>
2155+ <property name="ypad">0</property>
2156+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2157+ <property name="width_chars">-1</property>
2158+ <property name="single_line_mode">False</property>
2159+ <property name="angle">0</property>
2160+ </widget>
2161+ <packing>
2162+ <property name="type">tab</property>
2163+ </packing>
2164+ </child>
2165+
2166+ <child>
2167+ <widget class="GtkVBox" id="vbox_photographs">
2168+ <property name="visible">True</property>
2169+ <property name="homogeneous">False</property>
2170+ <property name="spacing">0</property>
2171+
2172+ <child>
2173+ <widget class="GtkFrame" id="fphotographs">
2174+ <property name="visible">True</property>
2175+ <property name="label_xalign">0</property>
2176+ <property name="label_yalign">0.5</property>
2177+ <property name="shadow_type">GTK_SHADOW_NONE</property>
2178+
2179+ <child>
2180+ <widget class="GtkAlignment" id="aphotographs1">
2181+ <property name="visible">True</property>
2182+ <property name="xalign">0.5</property>
2183+ <property name="yalign">0.5</property>
2184+ <property name="xscale">1</property>
2185+ <property name="yscale">1</property>
2186+ <property name="top_padding">0</property>
2187+ <property name="bottom_padding">0</property>
2188+ <property name="left_padding">12</property>
2189+ <property name="right_padding">0</property>
2190+
2191+ <child>
2192+ <widget class="GtkVBox" id="vbox10">
2193+ <property name="visible">True</property>
2194+ <property name="homogeneous">False</property>
2195+ <property name="spacing">0</property>
2196+
2197+ <child>
2198+ <widget class="GtkHBox" id="hbphotographs">
2199+ <property name="visible">True</property>
2200+ <property name="homogeneous">False</property>
2201+ <property name="spacing">0</property>
2202+
2203+ <child>
2204+ <widget class="GtkSpinButton" id="spinbutton_slideshow_step">
2205+ <property name="visible">True</property>
2206+ <property name="can_focus">True</property>
2207+ <property name="climb_rate">1</property>
2208+ <property name="digits">0</property>
2209+ <property name="numeric">True</property>
2210+ <property name="update_policy">GTK_UPDATE_ALWAYS</property>
2211+ <property name="snap_to_ticks">True</property>
2212+ <property name="wrap">False</property>
2213+ <property name="adjustment">5 1 100 1 10 0</property>
2214+ <signal name="value_changed" handler="on_spinbutton_slideshow_step_value_changed"/>
2215+ </widget>
2216+ <packing>
2217+ <property name="padding">0</property>
2218+ <property name="expand">True</property>
2219+ <property name="fill">True</property>
2220+ </packing>
2221+ </child>
2222+
2223+ <child>
2224+ <widget class="GtkLabel" id="lslideshowstep">
2225+ <property name="visible">True</property>
2226+ <property name="label" translatable="yes">Slideshow step (in seconds)</property>
2227+ <property name="use_underline">False</property>
2228+ <property name="use_markup">False</property>
2229+ <property name="justify">GTK_JUSTIFY_LEFT</property>
2230+ <property name="wrap">False</property>
2231+ <property name="selectable">False</property>
2232+ <property name="xalign">0.5</property>
2233+ <property name="yalign">0.5</property>
2234+ <property name="xpad">0</property>
2235+ <property name="ypad">0</property>
2236+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2237+ <property name="width_chars">-1</property>
2238+ <property name="single_line_mode">False</property>
2239+ <property name="angle">0</property>
2240+ </widget>
2241+ <packing>
2242+ <property name="padding">0</property>
2243+ <property name="expand">True</property>
2244+ <property name="fill">True</property>
2245+ </packing>
2246+ </child>
2247+ </widget>
2248+ <packing>
2249+ <property name="padding">0</property>
2250+ <property name="expand">False</property>
2251+ <property name="fill">True</property>
2252+ </packing>
2253+ </child>
2254+ </widget>
2255+ </child>
2256+ </widget>
2257+ </child>
2258+
2259+ <child>
2260+ <widget class="GtkLabel" id="lslideshow">
2261+ <property name="visible">True</property>
2262+ <property name="label" translatable="yes">&lt;b&gt;Slideshow&lt;/b&gt;</property>
2263+ <property name="use_underline">False</property>
2264+ <property name="use_markup">True</property>
2265+ <property name="justify">GTK_JUSTIFY_LEFT</property>
2266+ <property name="wrap">False</property>
2267+ <property name="selectable">False</property>
2268+ <property name="xalign">0.5</property>
2269+ <property name="yalign">0.5</property>
2270+ <property name="xpad">0</property>
2271+ <property name="ypad">0</property>
2272+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2273+ <property name="width_chars">-1</property>
2274+ <property name="single_line_mode">False</property>
2275+ <property name="angle">0</property>
2276+ </widget>
2277+ <packing>
2278+ <property name="type">label_item</property>
2279+ </packing>
2280+ </child>
2281+ </widget>
2282+ <packing>
2283+ <property name="padding">5</property>
2284+ <property name="expand">True</property>
2285+ <property name="fill">True</property>
2286+ </packing>
2287+ </child>
2288+
2289+ <child>
2290+ <placeholder/>
2291+ </child>
2292+
2293+ <child>
2294+ <placeholder/>
2295+ </child>
2296+ </widget>
2297+ <packing>
2298+ <property name="tab_expand">False</property>
2299+ <property name="tab_fill">True</property>
2300+ </packing>
2301+ </child>
2302+
2303+ <child>
2304+ <widget class="GtkLabel" id="LPhotographs">
2305+ <property name="visible">True</property>
2306+ <property name="label" translatable="yes">Photographs</property>
2307+ <property name="use_underline">False</property>
2308+ <property name="use_markup">False</property>
2309+ <property name="justify">GTK_JUSTIFY_LEFT</property>
2310+ <property name="wrap">False</property>
2311+ <property name="selectable">False</property>
2312+ <property name="xalign">0.5</property>
2313+ <property name="yalign">0.5</property>
2314+ <property name="xpad">0</property>
2315+ <property name="ypad">0</property>
2316+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2317+ <property name="width_chars">-1</property>
2318+ <property name="single_line_mode">False</property>
2319+ <property name="angle">0</property>
2320+ </widget>
2321+ <packing>
2322+ <property name="type">tab</property>
2323+ </packing>
2324+ </child>
2325+ </widget>
2326+ <packing>
2327+ <property name="padding">0</property>
2328+ <property name="expand">True</property>
2329+ <property name="fill">True</property>
2330+ </packing>
2331+ </child>
2332+ </widget>
2333+ </child>
2334+</widget>
2335+
2336 </glade-interface>
2337
2338=== modified file 'entertainerlib/utils/preferences_dialog.py'
2339--- entertainerlib/utils/preferences_dialog.py 2009-02-10 00:25:53 +0000
2340+++ entertainerlib/utils/preferences_dialog.py 2009-03-08 22:29:55 +0000
2341@@ -48,6 +48,8 @@
2342 self.on_theme_list_cursor_changed,
2343 "on_checkbutton_autostart_toggled" :
2344 self.on_checkbutton_autostart_toggled,
2345+ "on_checkbutton_fullscreen_toggled" :
2346+ self.on_checkbutton_fullscreen_toggled,
2347 "on_checkbutton_systray_icon_toggled" :
2348 self.on_checkbutton_systray_icon_toggled,
2349 "on_effect_checkbox_toggled" : self.on_effect_checkbox_toggled,
2350@@ -160,16 +162,21 @@
2351
2352 self.config.write_preference_value("General", "theme", name.get_text())
2353
2354+ def on_checkbutton_autostart_toggled(self, widget):
2355+ """Server Autostart checkbox toggled"""
2356+ self.config.write_preference_value("General", "start_server_auto",
2357+ widget.get_active())
2358+
2359+ def on_checkbutton_fullscreen_toggled(self, widget):
2360+ """Start in fullscreen checkbox toggled"""
2361+ self.config.write_preference_value("General", "start_in_fullscreen",
2362+ widget.get_active())
2363+
2364 def on_checkbutton_systray_icon_toggled(self, widget):
2365 """System Tray Icon checkbox toggled"""
2366 self.config.write_preference_value("General", "display_icon",
2367 widget.get_active())
2368
2369- def on_checkbutton_autostart_toggled(self, widget):
2370- """Server Autostart checkbox toggled"""
2371- self.config.write_preference_value("General", "start_server_auto",
2372- widget.get_active())
2373-
2374 def on_effect_checkbox_toggled(self, widget):
2375 """Effect checkbox toggled"""
2376 combobox = self.widgets.get_widget("effect_combobox")
2377@@ -262,41 +269,41 @@
2378 index_counter += 1
2379
2380 # Checkboxes
2381- effect_checkbox = self.widgets.get_widget("effect_checkbox")
2382- effect_combobox = self.widgets.get_widget("effect_combobox")
2383 checkbutton_systray_icon = self.widgets.get_widget(
2384 "checkbutton_systray_icon")
2385- checkbutton_autostart = self.widgets.get_widget(
2386- "checkbutton_autostart")
2387- spinbutton_slideshow_step = self.widgets.get_widget(
2388- "spinbutton_slideshow_step")
2389-
2390- show_effects = self.config.show_effects()
2391- effect = self.config.transition_effect()
2392- start_icon = self.config.tray_icon_enabled()
2393- start_server_auto = self.config.start_auto_server()
2394- slideshow_step = self.config.get_slideshow_step()
2395-
2396- if start_icon:
2397+ if self.config.tray_icon_enabled():
2398 checkbutton_systray_icon.set_active(True)
2399 else:
2400 checkbutton_systray_icon.set_active(False)
2401
2402- if start_server_auto:
2403+ checkbutton_autostart = self.widgets.get_widget("checkbutton_autostart")
2404+ if self.config.start_auto_server():
2405 checkbutton_autostart.set_active(True)
2406 else:
2407 checkbutton_autostart.set_active(False)
2408
2409- if show_effects:
2410+ checkbutton_fullscreen = self.widgets.get_widget(
2411+ "checkbutton_fullscreen")
2412+ if self.config.start_in_fullscreen():
2413+ checkbutton_fullscreen.set_active(True)
2414+ else:
2415+ checkbutton_fullscreen.set_active(False)
2416+
2417+ effect_checkbox = self.widgets.get_widget("effect_checkbox")
2418+ effect_combobox = self.widgets.get_widget("effect_combobox")
2419+ if self.config.show_effects():
2420 effect_checkbox.set_active(True)
2421 effect_combobox.set_sensitive(True)
2422 else:
2423 effect_checkbox.set_active(False)
2424 effect_combobox.set_sensitive(False)
2425
2426- spinbutton_slideshow_step.set_value(slideshow_step)
2427+ spinbutton_slideshow_step = self.widgets.get_widget(
2428+ "spinbutton_slideshow_step")
2429+ spinbutton_slideshow_step.set_value(self.config.get_slideshow_step())
2430
2431 # Set Effect Combobox value (Text values are set in glade file)
2432+ effect = self.config.transition_effect()
2433 if effect == "No effect":
2434 effect_combobox.set_active(0)
2435 if effect == "Crossfade":
2436@@ -305,6 +312,4 @@
2437 effect_combobox.set_active(2)
2438 if effect == "Slide":
2439 effect_combobox.set_active(3)
2440- if effect == "Slide and fade":
2441- effect_combobox.set_active(4)
2442

Subscribers

People subscribed via source and target branches