Merge lp:~mblayman/entertainer/less-config into lp:entertainer/future

Proposed by Matt Layman
Status: Merged
Approved by: Paul Hummer
Approved revision: 378
Merged at revision: not available
Proposed branch: lp:~mblayman/entertainer/less-config
Merge into: lp:entertainer/future
Diff against target: None lines
To merge this branch: bzr merge lp:~mblayman/entertainer/less-config
Reviewer Review Type Date Requested Status
Paul Hummer Approve
Review via email: mp+10217@code.launchpad.net

Commit message

Merged preference.conf into content.conf so there is only one config file to deal with.

To post a comment you must log in.
Revision history for this message
Matt Layman (mblayman) wrote :

Here is a branch that eliminates preferences.conf and puts the information that was in it into content.conf. Of course, it also cleans up Configuration to account for these changes. I have more changes coming for Configuration, but I want to keep these branches relatively small.

This branch is smaller than the diff makes it appear. I merged in Paul's dialog-magics branch.

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

Generally this looks good. I think it's going to need some rigorous testing, but I don't think that's a bad thing.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'cfg/content.conf'
2--- cfg/content.conf 2009-05-31 17:11:16 +0000
3+++ cfg/content.conf 2009-08-16 19:34:38 +0000
4@@ -1,26 +1,33 @@
5 # Copyright (c) 2009 Entertainer Developers - See COPYING - GPLv2
6-[Images]
7-folders =
8-display_hidden_files_folders = False
9+[Media]
10+download_lyrics = False
11+download_album_art = True
12+download_metadata = True
13+display_eject_in_menu = False
14
15 [Weather]
16 location = Bath,England
17 display_in_menu = True
18-metric_units = True
19-
20-[Music]
21-folders =
22-download_lyrics = False
23-download_album_art = True
24-
25-[Videos]
26-folders =
27-download_metadata = True
28
29 [RSS]
30-feeds = http://theironlion.net/feeds/blog;http://www.joshuascotton.com/main/archives/tag/entertainer/feed;http://laymanstermsdev.wordpress.com/feed
31+feeds = http://theironlion.net/blog/feed;http://www.joshuascotton.com/main/archives/tag/entertainer/feed;http://laymanstermsdev.wordpress.com/feed
32 fetch_interval = 15
33
34 [CD]
35 display_eject_in_menu = False
36
37+[Photographs]
38+slideshow_step = 5
39+
40+[General]
41+stage_width = 1366
42+stage_height = 768
43+show_effects = True
44+start_in_fullscreen = True
45+theme = Default
46+backend_port = 45054
47+history_size = 8
48+transition_effect = Slide
49+start_server_auto = True
50+display_icon = False
51+
52
53=== removed file 'cfg/preferences.conf'
54--- cfg/preferences.conf 2009-05-06 03:40:22 +0000
55+++ cfg/preferences.conf 1970-01-01 00:00:00 +0000
56@@ -1,16 +0,0 @@
57-# Copyright (c) 2009 Entertainer Developers - See COPYING - GPLv2
58-[Photographs]
59-slideshow_step = 5
60-
61-[General]
62-stage_width = 1366
63-stage_height = 768
64-show_effects = True
65-start_in_fullscreen = True
66-theme = Default
67-backend_port = 45054
68-history_size = 8
69-transition_effect = Slide
70-start_server_auto = True
71-display_icon = False
72-
73
74=== modified file 'entertainerlib/backend/components/mediacache/image_cache.py'
75--- entertainerlib/backend/components/mediacache/image_cache.py 2009-06-30 01:06:01 +0000
76+++ entertainerlib/backend/components/mediacache/image_cache.py 2009-08-16 18:51:06 +0000
77@@ -117,15 +117,13 @@
78 "Path doesn't exist: " + path)
79 else:
80 for root, dirs, files in os.walk(path):
81- if os.path.split(root)[-1][0] == "." and not \
82- self.config.display_hidden_files_folders():
83+ if os.path.split(root)[-1][0] == ".":
84 continue
85 if not self.isDirectoryInCache(root):
86 self._addAlbum(root)
87
88 for name in files:
89- if os.path.split(name)[-1][0] == "." and not \
90- self.config.display_hidden_files_folders():
91+ if os.path.split(name)[-1][0] == ".":
92 continue
93 if self.isSupportedFormat(name):
94 self.addFile(os.path.join(root, name))
95
96=== modified file 'entertainerlib/backend/components/mediacache/media_cache_manager.py'
97--- entertainerlib/backend/components/mediacache/media_cache_manager.py 2009-05-10 17:36:49 +0000
98+++ entertainerlib/backend/components/mediacache/media_cache_manager.py 2009-08-16 19:34:38 +0000
99@@ -23,11 +23,11 @@
100 self.logger = Logger().getLogger(
101 'backend.components.mediacache.MediaCacheManager')
102 self.config = Configuration()
103- self.video_folders = self.config.get_video_folders()
104+ self.video_folders = self.config.get_media_folders()
105 self._index_videos(self.video_folders)
106- self.music_folders = self.config.get_music_folders()
107+ self.music_folders = self.config.get_media_folders()
108 self._index_music(self.music_folders)
109- self.image_folders = self.config.get_image_folders()
110+ self.image_folders = self.config.get_media_folders()
111 self._index_images(self.image_folders)
112
113 # Should we rebuild to detect files that were removed while backend was
114@@ -104,9 +104,9 @@
115 we need to index them. If folders are removed, we need to remove
116 them from the cache and also from FileSystemObeserver.
117 """
118- updated_video_folders = self.config.get_video_folders()
119- updated_music_folders = self.config.get_music_folders()
120- updated_image_folders = self.config.get_image_folders()
121+ updated_video_folders = self.config.get_media_folders()
122+ updated_music_folders = self.config.get_media_folders()
123+ updated_image_folders = self.config.get_media_folders()
124
125 # Handle image folder changes
126 current_images = set(self.image_folders)
127
128=== modified file 'entertainerlib/configuration.py'
129--- entertainerlib/configuration.py 2009-07-07 01:28:42 +0000
130+++ entertainerlib/configuration.py 2009-08-16 20:02:42 +0000
131@@ -64,24 +64,7 @@
132 self.ALBUM_ART_DIR = os.path.join(self.cfg_dir, 'cache/album_art')
133 self.MOVIE_ART_DIR = os.path.join(self.cfg_dir, 'cache/movie_art')
134
135- # Preferences file
136- self.preferences_conf = os.path.join(self.cfg_dir,
137- 'preferences.conf')
138-
139- # Content file
140- self.content_conf = os.path.join(self.cfg_dir, 'content.conf')
141-
142- self.content_config = ConfigParser.ConfigParser()
143- self.preferences = ConfigParser.ConfigParser()
144- try:
145- self.content_config.readfp(open(self.content_conf))
146- self.preferences.readfp(open(self.preferences_conf))
147- except ParsingError:
148- print("ParsingError with configuration file.")
149- sys.exit(1)
150- except IOError:
151- print("IOError: Couldn't read configuration file.")
152- sys.exit(1)
153+ self.read_config_files()
154
155 self.theme = Theme(self.get_theme_path())
156
157@@ -94,6 +77,20 @@
158 'host': 'localhost',
159 'port': 55545}
160
161+ def read_config_files(self):
162+ '''Read in the config files.'''
163+ self.content_conf = os.path.join(self.cfg_dir, 'content.conf')
164+
165+ self.content = ConfigParser.ConfigParser()
166+ try:
167+ self.content.readfp(open(self.content_conf))
168+ except ParsingError:
169+ print("ParsingError with configuration file.")
170+ sys.exit(1)
171+ except IOError:
172+ print("IOError: Couldn't read configuration file.")
173+ sys.exit(1)
174+
175 def create_cfg_dir(self):
176 '''Create a configuration directory and default config files.'''
177
178@@ -135,8 +132,7 @@
179 Read configuration files again and update this object.
180 """
181 try:
182- self.content_config.readfp(open(self.content_conf))
183- self.preferences.readfp(open(self.preferences_conf))
184+ self.content.readfp(open(self.content_conf))
185 except ParsingError:
186 raise Exception("Syntax error in configuration file.")
187 except IOError:
188@@ -144,33 +140,31 @@
189
190 def write_content_value(self, section, option, value):
191 """Write a new value to the content configuration file."""
192- try:
193- self.content_config.set(section, option, value)
194+
195+ def write_value(section, option, value):
196+ '''Actually write the value to the section and option.'''
197+ self.content.set(section, option, value)
198 cfg_file = file(self.content_conf, 'w')
199- self.content_config.write(cfg_file)
200+ self.content.write(cfg_file)
201+
202+ try:
203+ write_value(section, option, value)
204 except NoSectionError:
205- raise Exception("No Section to set in content.conf file")
206+ # Provide an upgrade path to additions of new sections.
207+ shutil.rmtree(self.cfg_dir)
208+ self.create_cfg_dir()
209+ self.read_config_files()
210+ write_value(section, option, value)
211 except NoOptionError:
212 raise Exception("No Option to set in content.conf file")
213
214- def write_preference_value(self, section, option, value):
215- """Write a new value to the preferences configuration file."""
216- try:
217- self.preferences.set(section, option, value)
218- cfg_file = file(self.preferences_conf, 'w')
219- self.preferences.write(cfg_file)
220- except NoSectionError:
221- raise Exception("No Section to set in preferences.conf file")
222- except NoOptionError:
223- raise Exception("No Option to set in preferences.conf file")
224-
225 def get_stage_width(self):
226 '''Get the stage width from the preferences'''
227 if self.stage_width:
228 return self.stage_width
229
230 try:
231- self.stage_width = self.preferences.getint("General", "stage_width")
232+ self.stage_width = self.content.getint("General", "stage_width")
233 except (NoSectionError, NoOptionError):
234 self.stage_width = 1366 # Default
235
236@@ -186,8 +180,7 @@
237 return self.stage_height
238
239 try:
240- self.stage_height = self.preferences.getint("General",
241- "stage_height")
242+ self.stage_height = self.content.getint("General", "stage_height")
243 except (NoSectionError, NoOptionError):
244 self.stage_height = 768 # Default
245
246@@ -204,7 +197,7 @@
247 """
248 theme_path = os.path.join(self.get_cfg_dir(), 'themes')
249 try:
250- theme = self.preferences.get("General", "theme")
251+ theme = self.content.get("General", "theme")
252 except (NoSectionError, NoOptionError):
253 return os.path.join(theme_path, "Default")
254
255@@ -219,7 +212,7 @@
256 @return: boolean
257 """
258 try:
259- result = self.preferences.getboolean("General", "display_icon")
260+ result = self.content.getboolean("General", "display_icon")
261 except (NoSectionError, NoOptionError):
262 return False
263 return result
264@@ -230,7 +223,7 @@
265 @return: Integer
266 """
267 try:
268- result = self.content_config.getint("RSS", "fetch_interval")
269+ result = self.content.getint("RSS", "fetch_interval")
270 except (NoSectionError, NoOptionError):
271 return 60 # Default is one hour
272 return result
273@@ -241,46 +234,18 @@
274 @return: Integer
275 """
276 try:
277- result = self.preferences.getint("General", "backend_port")
278+ result = self.content.getint("General", "backend_port")
279 except (NoSectionError, NoOptionError):
280 return 45054 # Default port
281 return result
282
283- def get_video_folders(self):
284- """
285- Get list of video folders
286- @return:String Array
287- """
288- try:
289- video_list = self.content_config.get("Videos", "folders")
290- result = self._is_valid_media_folder(video_list.split(';'))
291- except (NoSectionError, NoOptionError):
292- return []
293- return result
294-
295- def get_music_folders(self):
296- """
297- Get list of music folders
298- @return: String Array
299- """
300- try:
301- music_list = self.content_config.get("Music", "folders")
302- result = music_list.split(';')
303- except (NoSectionError, NoOptionError):
304- return []
305- return result
306-
307- def get_image_folders(self):
308- """
309- Get list of image folders
310- @return: String Array
311- """
312- try:
313- image_list = self.content_config.get("Images", "folders")
314- result = self._is_valid_media_folder(image_list.split(';'))
315- except (NoSectionError, NoOptionError):
316- return []
317- return result
318+ def get_media_folders(self):
319+ '''Return a list of folders for media.'''
320+ try:
321+ media = self.content.get("Media", "folders")
322+ return self._is_valid_media_folder(media.split(';'))
323+ except (NoSectionError, NoOptionError):
324+ return []
325
326 def get_feeds(self):
327 """
328@@ -288,7 +253,7 @@
329 @return: String Array
330 """
331 try:
332- rss_feeds = self.content_config.get("RSS", "feeds")
333+ rss_feeds = self.content.get("RSS", "feeds")
334 result = rss_feeds.split(';')
335 except (NoSectionError, NoOptionError):
336 return []
337@@ -300,7 +265,7 @@
338 @return: List of strings
339 """
340 try:
341- location = self.content_config.get("Weather", "location")
342+ location = self.content.get("Weather", "location")
343 except (NoSectionError, NoOptionError):
344 location = ''
345 return location
346@@ -311,8 +276,7 @@
347 @return: Boolean
348 """
349 try:
350- result = self.content_config.getboolean("Weather",
351- "display_in_menu")
352+ result = self.content.getboolean("Weather", "display_in_menu")
353 except (NoSectionError, NoOptionError):
354 return False
355 return result
356@@ -323,8 +287,7 @@
357 @return: Boolean
358 """
359 try:
360- result = self.content_config.getboolean("CD",
361- "display_eject_in_menu")
362+ result = self.content.getboolean("CD", "display_eject_in_menu")
363 except (NoSectionError, NoOptionError):
364 return False
365 return result
366@@ -334,8 +297,7 @@
367 Get True if video metadata should be downloaded, otherwise False
368 """
369 try:
370- result = self.content_config.getboolean("Videos",
371- "download_metadata")
372+ result = self.content.getboolean("Media", "download_video_metadata")
373 except (NoSectionError, NoOptionError):
374 return False
375 return result
376@@ -346,8 +308,7 @@
377 @return: boolean
378 """
379 try:
380- result = self.content_config.getboolean("Music",
381- "download_album_art")
382+ result = self.content.getboolean("Media", "download_album_art")
383 except (NoSectionError, NoOptionError):
384 return False
385 return result
386@@ -358,16 +319,7 @@
387 @return: boolean
388 """
389 try:
390- result = self.content_config.getboolean("Music", "download_lyrics")
391- except (NoSectionError, NoOptionError):
392- return False
393- return result
394-
395- def display_hidden_files_folders(self):
396- """If True hidden files and folders will be added to image library."""
397- try:
398- result = self.content_config.getboolean("Images",
399- "display_hidden_files_folders")
400+ result = self.content.getboolean("Media", "download_lyrics")
401 except (NoSectionError, NoOptionError):
402 return False
403 return result
404@@ -378,7 +330,7 @@
405 @return: boolean
406 """
407 try:
408- result = self.preferences.getboolean("General", "show_effects")
409+ result = self.content.getboolean("General", "show_effects")
410 except (NoSectionError, NoOptionError):
411 return False
412 return result
413@@ -389,7 +341,7 @@
414 @return: string (name of the effect)
415 """
416 try:
417- result = self.preferences.get("General", "transition_effect")
418+ result = self.content.get("General", "transition_effect")
419 except (NoSectionError, NoOptionError):
420 return False
421 return result
422@@ -400,7 +352,7 @@
423 @return: string (theme name)
424 """
425 try:
426- result = self.preferences.get("General", "theme")
427+ result = self.content.get("General", "theme")
428 except (NoSectionError, NoOptionError):
429 result = "Default"
430 return result
431@@ -408,8 +360,7 @@
432 def start_in_fullscreen(self):
433 '''Boolean to determine whether to start in fullscreen mode or not.'''
434 try:
435- result = self.preferences.getboolean("General",
436- "start_in_fullscreen")
437+ result = self.content.getboolean("General", "start_in_fullscreen")
438 except (NoSectionError, NoOptionError):
439 return True
440 return result
441@@ -420,8 +371,7 @@
442 @return: boolean
443 """
444 try:
445- result = self.preferences.getboolean("General",
446- "start_server_auto")
447+ result = self.content.getboolean("General", "start_server_auto")
448 except (NoSectionError, NoOptionError):
449 return False
450 return result
451@@ -433,7 +383,7 @@
452 @return: Integer
453 """
454 try:
455- result = self.preferences.getint("General", "history_size")
456+ result = self.content.getint("General", "history_size")
457 except (NoSectionError, NoOptionError):
458 return 10
459 return result
460@@ -444,7 +394,7 @@
461 @return: Integer
462 """
463 try:
464- result = self.preferences.getint("Photographs", "slideshow_step")
465+ result = self.content.getint("Photographs", "slideshow_step")
466 except (NoSectionError, NoOptionError):
467 return 5
468 return result
469
470=== modified file 'entertainerlib/dialog.py'
471--- entertainerlib/dialog.py 2009-07-14 04:24:07 +0000
472+++ entertainerlib/dialog.py 2009-08-16 20:02:42 +0000
473@@ -50,33 +50,25 @@
474 self.dialog = self.widgets.get_widget("ContentManagementDialog")
475 if (self.dialog):
476 callback_dic = {
477+ # Dialog-wide callbacks
478 "on_button_open_list_clicked" :
479 self.on_button_open_list_clicked,
480 "on_close_button_clicked" : self.on_close_button_clicked,
481- "on_button_remove_videos_clicked" :
482- self.on_button_remove_videos_clicked,
483- "on_button_add_videos_clicked" :
484- self.on_button_add_videos_clicked,
485- "on_button_edit_videos_clicked" :
486- self.on_button_edit_videos_clicked,
487+ "on_ContentManagementDialog_destroy" : self.on_dialog_closed,
488+
489+ # Media tab
490+ "on_button_remove_media_clicked" :
491+ self.on_button_remove_media_clicked,
492+ "on_button_add_media_clicked" :
493+ self.on_button_add_media_clicked,
494+ "on_button_edit_media_clicked" :
495+ self.on_button_edit_media_clicked,
496 "on_checkbutton_video_metadata_toggled" :
497 self.on_checkbutton_video_metadata_toggled,
498- "on_button_add_music_clicked" :
499- self.on_button_add_music_clicked,
500- "on_button_remove_music_clicked" :
501- self.on_button_remove_music_clicked,
502- "on_button_edit_music_clicked" :
503- self.on_button_edit_music_clicked,
504 "on_lyrics_checkbox_toggled" : self.on_lyrics_checkbox_toggled,
505 "on_art_checkbox_toggled" : self.on_art_checkbox_toggled,
506- "on_button_add_images_clicked" :
507- self.on_button_add_images_clicked,
508- "on_button_remove_images_clicked" :
509- self.on_button_remove_images_clicked,
510- "on_button_edit_images_clicked" :
511- self.on_button_edit_images_clicked,
512- "on_hidden_files_folders_checkbox_toggled" :
513- self.on_hidden_files_folders_checkbox_toggled,
514+
515+ # Feed tab
516 "on_button_add_feed_clicked" :
517 self.on_button_add_feed_clicked,
518 "on_button_remove_feed_clicked" :
519@@ -85,20 +77,23 @@
520 self.on_button_edit_feed_clicked,
521 "on_fetch_interval_spinbutton_value_changed" :
522 self.on_fetch_interval_spinbutton_value_changed,
523- "on_ContentManagementDialog_destroy" : self.on_dialog_closed,
524 "on_url_dialog_delete_event" : self.on_url_dialog_delete_event,
525 "on_url_dialog_ok_button_clicked" :
526 self.on_url_dialog_ok_button_clicked,
527 "on_url_dialog_cancel_button_clicked" :
528 self.on_url_dialog_cancel_button_clicked,
529- "on_button_video_rebuild_clicked" :
530- self.on_button_video_rebuild_clicked,
531+
532+ # Reset tab
533+ "on_button_media_rebuild_clicked" :
534+ self.on_button_media_rebuild_clicked,
535 "on_button_music_rebuild_clicked" :
536 self.on_button_music_rebuild_clicked,
537 "on_button_image_rebuild_clicked" :
538 self.on_button_image_rebuild_clicked,
539 "on_button_feed_rebuild_clicked" :
540 self.on_button_feed_rebuild_clicked,
541+
542+ # Weather tab
543 "on_button_add_weather_clicked" :
544 self.on_button_add_weather_clicked,
545 "on_button_remove_weather_clicked" :
546@@ -112,6 +107,7 @@
547 "on_location_add_button_clicked" :
548 self.on_location_add_button_clicked,
549 "on_location_entry_activate" : self.on_location_entry_activate}
550+
551 self.widgets.signal_autoconnect(callback_dic)
552
553 # Initialize dialog widgets with correct values and show dialog
554@@ -127,8 +123,6 @@
555 column = gtk.TreeViewColumn(_("Location"), cell_renderer, text=0)
556 result_list.append_column(column)
557
558-# Signal handlers
559-
560 def on_dialog_closed(self, widget):
561 """Callback function for dialog's close button"""
562 try:
563@@ -165,12 +159,12 @@
564 self.dialog.hide()
565 self.dialog.destroy()
566
567- def on_button_add_videos_clicked(self, widget):
568+ def on_button_add_media_clicked(self, widget):
569 """Opens add URL dialog. """
570- widget = self.widgets.get_widget("treeview_videos")
571+ widget = self.widgets.get_widget("treeview_media")
572 model = widget.get_model()
573 # Open "Select folder" dialog
574- dialog = gtk.FileChooserDialog(_("Select video folder"), None,
575+ dialog = gtk.FileChooserDialog(_("Select folder"), None,
576 gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
577 (gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,
578 gtk.STOCK_OPEN,gtk.RESPONSE_OK),
579@@ -179,25 +173,25 @@
580 # If folder was selected we add it to model and update config file
581 if(status == gtk.RESPONSE_OK):
582 self.add_to_model_and_config(dialog.get_current_folder(), model,
583- self.video_folders, "Videos")
584+ self.media_folders, "Media")
585 dialog.destroy()
586
587- def on_button_remove_videos_clicked(self, widget):
588- """Remove currently selected folder from video folders"""
589- widget = self.widgets.get_widget("treeview_videos")
590+ def on_button_remove_media_clicked(self, widget):
591+ """Remove currently selected folder from media folders"""
592+ widget = self.widgets.get_widget("treeview_media")
593 model = widget.get_model()
594 selection = widget.get_selection().get_selected()
595 if selection[1] == None:
596 return
597 rm_folder = model.get_value(selection[1], 0)
598- self.video_folders.remove(rm_folder)
599- str_folders = ";".join(self.video_folders)
600- self.config.write_content_value("Videos", "folders", str_folders)
601+ self.media_folders.remove(rm_folder)
602+ str_folders = ";".join(self.media_folders)
603+ self.config.write_content_value("Media", "folders", str_folders)
604 model.remove(selection[1])
605
606- def on_button_edit_videos_clicked(self, widget):
607+ def on_button_edit_media_clicked(self, widget):
608 """Edit currently selected folder"""
609- widget = self.widgets.get_widget("treeview_videos")
610+ widget = self.widgets.get_widget("treeview_media")
611 url_dialog = self.widgets.get_widget("url_dialog")
612 url_entry = self.widgets.get_widget("url_entry")
613 model = widget.get_model()
614@@ -212,11 +206,11 @@
615 # Update list model
616 model.set_value(selection[1], 0, self.url)
617 # Update configure file
618- pos = self.video_folders.index(folder)
619- self.video_folders.remove(folder)
620- self.video_folders.insert(pos, self.url)
621- str_folders = ";".join(self.video_folders)
622- self.config.write_content_value("Videos", "folders",
623+ pos = self.media_folders.index(folder)
624+ self.media_folders.remove(folder)
625+ self.media_folders.insert(pos, self.url)
626+ str_folders = ";".join(self.media_folders)
627+ self.config.write_content_value("Media", "folders",
628 str_folders)
629
630 def on_checkbutton_video_metadata_toggled(self, widget):
631@@ -224,124 +218,9 @@
632 Download video file metadata from internet
633 @param widget: GTK-Widget
634 """
635- self.config.write_content_value("Videos", "download_metadata",
636+ self.config.write_content_value("Media", "download_video_metadata",
637 widget.get_active())
638
639- def on_button_add_music_clicked(self, widget):
640- """
641- Opens add URL dialog
642- @param widget: GTK-Widget
643- """
644- widget = self.widgets.get_widget("treeview_music")
645- model = widget.get_model()
646- # Open "Select folder" dialog
647- dialog = gtk.FileChooserDialog(_("Select music folder"), None,
648- gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
649- (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN,
650- gtk.RESPONSE_OK),
651- None)
652- status = dialog.run()
653- # If folder was selected we add it to model and update config file
654- if(status == gtk.RESPONSE_OK):
655- self.add_to_model_and_config(dialog.get_current_folder(), model,
656- self.music_folders, "Music")
657- dialog.destroy()
658-
659- def on_button_remove_music_clicked(self, widget):
660- """Remove currently selected folder from music folders"""
661- widget = self.widgets.get_widget("treeview_music")
662- model = widget.get_model()
663- selection = widget.get_selection().get_selected()
664- if selection[1] == None:
665- return
666- rm_folder = model.get_value(selection[1], 0)
667- self.music_folders.remove(rm_folder)
668- str_folders = ";".join(self.music_folders)
669- self.config.write_content_value("Music", "folders", str_folders)
670- model.remove(selection[1])
671-
672- def on_button_edit_music_clicked(self, widget):
673- """Edit currently selected music folder"""
674- widget = self.widgets.get_widget("treeview_music")
675- url_dialog = self.widgets.get_widget("url_dialog")
676- url_entry = self.widgets.get_widget("url_entry")
677- model = widget.get_model()
678- selection = widget.get_selection().get_selected()
679- if selection[1] == None:
680- return
681- folder = model.get_value(selection[1], 0)
682- url_entry.set_text(folder)
683- url_dialog.set_title(_("Edit URL"))
684- status = url_dialog.run()
685- if status == gtk.RESPONSE_OK and os.path.exists(self.url):
686- # Update list model
687- model.set_value(selection[1], 0, self.url)
688- # Update configure file
689- pos = self.music_folders.index(folder)
690- self.music_folders.remove(folder)
691- self.music_folders.insert(pos, self.url)
692- str_folders = ";".join(self.music_folders)
693- self.config.write_content_value("Music", "folders", str_folders)
694-
695- def on_button_add_images_clicked(self, widget):
696- """Opens add URL dialog. """
697- widget = self.widgets.get_widget("treeview_images")
698- model = widget.get_model()
699- # Open "Select folder" dialog
700- dialog = gtk.FileChooserDialog(_("Select image folder"), None,
701- gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
702- (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN,
703- gtk.RESPONSE_OK),
704- None)
705- status = dialog.run()
706- # If folder was selected we add it to model and update config file
707- if(status == gtk.RESPONSE_OK):
708- self.add_to_model_and_config(dialog.get_current_folder(), model,
709- self.image_folders, "Images")
710- dialog.destroy()
711-
712- def on_button_remove_images_clicked(self, widget):
713- """Remove currently selected folder from images folders"""
714- widget = self.widgets.get_widget("treeview_images")
715- model = widget.get_model()
716- selection = widget.get_selection().get_selected()
717- if selection[1] == None:
718- return
719- rm_folder = model.get_value(selection[1], 0)
720- self.image_folders.remove(rm_folder)
721- str_folders = ";".join(self.image_folders)
722- self.config.write_content_value("Images", "folders", str_folders)
723- model.remove(selection[1])
724-
725- def on_button_edit_images_clicked(self, widget):
726- """Edit currently selected music folder"""
727- widget = self.widgets.get_widget("treeview_images")
728- url_dialog = self.widgets.get_widget("url_dialog")
729- url_entry = self.widgets.get_widget("url_entry")
730- model = widget.get_model()
731- selection = widget.get_selection().get_selected()
732- if selection[1] == None:
733- return
734- folder = model.get_value(selection[1], 0)
735- url_entry.set_text(folder)
736- url_dialog.set_title(_("Edit URL"))
737- status = url_dialog.run()
738- if status == gtk.RESPONSE_OK and os.path.exists(self.url):
739- # Update list model
740- model.set_value(selection[1], 0, self.url)
741- # Update configure file
742- pos = self.image_folders.index(folder)
743- self.image_folders.remove(folder)
744- self.image_folders.insert(pos, self.url)
745- str_folders = ";".join(self.image_folders)
746- self.config.write_content_value("Images", "folders",
747- str_folders)
748-
749- def on_hidden_files_folders_checkbox_toggled(self, widget):
750- """If True hidden files and folders will be added to image library."""
751- self.config.write_content_value("Images",
752- "display_hidden_files_folders", widget.get_active())
753-
754 def on_button_add_feed_clicked(self, widget):
755 """Opens add feed dialog. """
756 widget = self.widgets.get_widget("treeview_feeds")
757@@ -406,11 +285,11 @@
758 widget.get_value_as_int())
759
760 def on_lyrics_checkbox_toggled(self, widget):
761- self.config.write_content_value("Music", "download_lyrics",
762+ self.config.write_content_value("Media", "download_lyrics",
763 widget.get_active())
764
765 def on_art_checkbox_toggled(self, widget):
766- self.config.write_content_value("Music", "download_album_art",
767+ self.config.write_content_value("Media", "download_album_art",
768 widget.get_active())
769
770 def on_url_dialog_ok_button_clicked(self, widget):
771@@ -555,9 +434,9 @@
772 """
773 self.on_location_find_button_clicked(widget)
774
775- def on_button_video_rebuild_clicked(self, widget):
776+ def on_button_media_rebuild_clicked(self, widget):
777 """
778- Rebuild video cache requested
779+ Rebuild media cache requested
780 @param widget: GTK-Widget
781 """
782 try:
783@@ -648,41 +527,25 @@
784 """Read configuration and set dialog widget values with read values.
785 """
786 # == Videos ==
787- videolist_widget = self.widgets.get_widget("treeview_videos")
788- videostore = gtk.ListStore(str)
789+ medialist_widget = self.widgets.get_widget("treeview_media")
790+ mediastore = gtk.ListStore(str)
791
792 cell_renderer = gtk.CellRendererText()
793 column = gtk.TreeViewColumn(_("Folders"), cell_renderer, text=0)
794- videolist_widget.append_column(column)
795+ medialist_widget.append_column(column)
796
797- self.video_folders = self.config.get_video_folders()
798+ self.media_folders = self.config.get_media_folders()
799
800 # Fill model with folders read from config file
801- self.init_model(videostore, self.video_folders)
802+ self.init_model(mediastore, self.media_folders)
803
804- videolist_widget.set_model(videostore)
805+ medialist_widget.set_model(mediastore)
806
807 # Checkboxes
808 metadata_checkbox = self.widgets.get_widget("video_metadata_checkbox")
809 md_val = self.config.download_video_metadata()
810 metadata_checkbox.set_active(md_val)
811
812- # == Music ==
813- musiclist_widget = self.widgets.get_widget("treeview_music")
814- music_model = gtk.ListStore(str)
815-
816- music_cell = gtk.CellRendererText()
817- music_column = gtk.TreeViewColumn(_("Folders"), music_cell, text=0)
818- musiclist_widget.append_column(music_column)
819-
820- self.music_folders = self.config.get_music_folders()
821-
822- # Fill model with folders read from config file
823- self.init_model(music_model, self.music_folders)
824-
825- musiclist_widget.set_model(music_model)
826-
827- # Checkboxes
828 art_checkbox = self.widgets.get_widget("art_checkbox")
829 art_val = self.config.download_album_art()
830 art_checkbox.set_active(art_val)
831@@ -691,27 +554,6 @@
832 lyrics_val = self.config.download_lyrics()
833 lyrics_checkbox.set_active(lyrics_val)
834
835- # == Images ==
836- imagelist_widget = self.widgets.get_widget("treeview_images")
837- images_model = gtk.ListStore(str)
838-
839- img_cell = gtk.CellRendererText()
840- img_column = gtk.TreeViewColumn(_("Folders"), img_cell, text=0)
841- imagelist_widget.append_column(img_column)
842-
843- self.image_folders = self.config.get_image_folders()
844-
845- # Fill model with folders read from config file
846- self.init_model(images_model, self.image_folders)
847-
848- imagelist_widget.set_model(images_model)
849-
850- # Checkboxes
851- hidden_checkbox = self.widgets.get_widget(
852- "hidden_files_folders_checkbox")
853- hidden_val = self.config.display_hidden_files_folders()
854- hidden_checkbox.set_active(hidden_val)
855-
856 # == RSS-feeds ==
857 feedlist_widget = self.widgets.get_widget("treeview_feeds")
858 feed_model = gtk.ListStore(str)
859@@ -1230,28 +1072,28 @@
860 comment = self.widgets.get_widget("comment_label")
861 comment.set_text(theme.getComment())
862
863- self.config.write_preference_value("General", "theme", name.get_text())
864+ self.config.write_content_value("General", "theme", name.get_text())
865
866 def on_checkbutton_autostart_toggled(self, widget):
867 """Server Autostart checkbox toggled"""
868- self.config.write_preference_value("General", "start_server_auto",
869+ self.config.write_content_value("General", "start_server_auto",
870 widget.get_active())
871
872 def on_checkbutton_fullscreen_toggled(self, widget):
873 """Start in fullscreen checkbox toggled"""
874- self.config.write_preference_value("General", "start_in_fullscreen",
875+ self.config.write_content_value("General", "start_in_fullscreen",
876 widget.get_active())
877
878 def on_checkbutton_systray_icon_toggled(self, widget):
879 """System Tray Icon checkbox toggled"""
880- self.config.write_preference_value("General", "display_icon",
881+ self.config.write_content_value("General", "display_icon",
882 widget.get_active())
883
884 def on_effect_checkbox_toggled(self, widget):
885 """Effect checkbox toggled"""
886 combobox = self.widgets.get_widget("effect_combobox")
887 combobox.set_sensitive(widget.get_active())
888- self.config.write_preference_value("General", "show_effects",
889+ self.config.write_content_value("General", "show_effects",
890 widget.get_active())
891
892 def on_effect_combobox_changed(self, widget):
893@@ -1265,12 +1107,12 @@
894 english_text = "Zoom and fade"
895 if text == _("Slide"):
896 english_text = "Slide"
897- self.config.write_preference_value("General", "transition_effect",
898+ self.config.write_content_value("General", "transition_effect",
899 english_text)
900
901 def on_spinbutton_slideshow_step_value_changed(self, widget):
902 """Activation of slideshow effects"""
903- self.config.write_preference_value("Photographs", "slideshow_step",
904+ self.config.write_content_value("Photographs", "slideshow_step",
905 int(widget.get_value()))
906
907 def on_dialog_closed(self, widget, after):
908
909=== modified file 'entertainerlib/glade/entertainer-content-management.glade'
910--- entertainerlib/glade/entertainer-content-management.glade 2009-05-31 16:36:18 +0000
911+++ entertainerlib/glade/entertainer-content-management.glade 2009-07-11 21:39:40 +0000
912@@ -1,1481 +1,1646 @@
913-<?xml version="1.0"?>
914+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
915+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
916+
917 <glade-interface>
918- <!-- interface-requires gtk+ 2.16 -->
919- <!-- interface-naming-policy toplevel-contextual -->
920- <widget class="GtkDialog" id="ContentManagementDialog">
921- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
922- <property name="border_width">5</property>
923- <property name="title" translatable="yes">Content management</property>
924- <property name="modal">True</property>
925- <property name="window_position">center</property>
926- <property name="icon_name">applications-multimedia</property>
927- <property name="type_hint">dialog</property>
928- <property name="has_separator">False</property>
929- <signal name="destroy" handler="on_ContentManagementDialog_destroy"/>
930- <child internal-child="vbox">
931- <widget class="GtkVBox" id="dialog-layout">
932- <property name="visible">True</property>
933- <property name="spacing">2</property>
934- <child>
935- <widget class="GtkNotebook" id="tabs">
936- <property name="visible">True</property>
937- <property name="can_focus">True</property>
938- <property name="has_focus">True</property>
939- <property name="can_default">True</property>
940- <property name="has_default">True</property>
941- <child>
942- <widget class="GtkVBox" id="vbox_videos">
943- <property name="visible">True</property>
944- <child>
945- <widget class="GtkVBox" id="vbox1">
946- <property name="visible">True</property>
947- <child>
948- <widget class="GtkFrame" id="frame_video_lib1">
949- <property name="visible">True</property>
950- <property name="border_width">5</property>
951- <property name="label_xalign">0</property>
952- <property name="shadow_type">none</property>
953- <child>
954- <widget class="GtkAlignment" id="alignment1">
955- <property name="visible">True</property>
956- <property name="left_padding">12</property>
957- <child>
958- <widget class="GtkVBox" id="vbox2">
959- <property name="visible">True</property>
960- <child>
961- <widget class="GtkLabel" id="label_video_folder_tip1">
962- <property name="visible">True</property>
963- <property name="xalign">0</property>
964- <property name="label" translatable="yes">Entertainer video library scans data from the listed folders.</property>
965- <property name="single_line_mode">True</property>
966- </widget>
967- <packing>
968- <property name="expand">False</property>
969- <property name="padding">5</property>
970- <property name="position">0</property>
971- </packing>
972- </child>
973- <child>
974- <widget class="GtkHBox" id="hbox2">
975- <property name="visible">True</property>
976- <child>
977- <widget class="GtkScrolledWindow" id="scrolledwindow1">
978- <property name="visible">True</property>
979- <property name="can_focus">True</property>
980- <property name="hscrollbar_policy">automatic</property>
981- <property name="vscrollbar_policy">automatic</property>
982- <property name="shadow_type">in</property>
983- <child>
984- <widget class="GtkTreeView" id="treeview_videos">
985- <property name="visible">True</property>
986- <property name="can_focus">True</property>
987- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
988- <property name="enable_search">False</property>
989- </widget>
990- </child>
991- </widget>
992- <packing>
993- <property name="position">0</property>
994- </packing>
995- </child>
996- <child>
997- <widget class="GtkVButtonBox" id="vbuttonbox1">
998- <property name="visible">True</property>
999- <property name="spacing">5</property>
1000- <property name="layout_style">start</property>
1001- <child>
1002- <widget class="GtkButton" id="button_add_videos">
1003- <property name="label">gtk-add</property>
1004- <property name="visible">True</property>
1005- <property name="can_focus">True</property>
1006- <property name="has_focus">True</property>
1007- <property name="can_default">True</property>
1008- <property name="has_default">True</property>
1009- <property name="receives_default">False</property>
1010- <property name="use_stock">True</property>
1011- <signal name="clicked" handler="on_button_add_videos_clicked"/>
1012- </widget>
1013- <packing>
1014- <property name="expand">False</property>
1015- <property name="fill">False</property>
1016- <property name="position">0</property>
1017- </packing>
1018- </child>
1019- <child>
1020- <widget class="GtkButton" id="button_remove_videos">
1021- <property name="label">gtk-remove</property>
1022- <property name="visible">True</property>
1023- <property name="can_focus">True</property>
1024- <property name="receives_default">False</property>
1025- <property name="use_stock">True</property>
1026- <signal name="clicked" handler="on_button_remove_videos_clicked"/>
1027- </widget>
1028- <packing>
1029- <property name="expand">False</property>
1030- <property name="fill">False</property>
1031- <property name="position">1</property>
1032- </packing>
1033- </child>
1034- <child>
1035- <widget class="GtkButton" id="button_edit_videos">
1036- <property name="label">gtk-edit</property>
1037- <property name="visible">True</property>
1038- <property name="can_focus">True</property>
1039- <property name="receives_default">False</property>
1040- <property name="use_stock">True</property>
1041- <signal name="clicked" handler="on_button_edit_videos_clicked"/>
1042- </widget>
1043- <packing>
1044- <property name="expand">False</property>
1045- <property name="fill">False</property>
1046- <property name="position">2</property>
1047- </packing>
1048- </child>
1049- </widget>
1050- <packing>
1051- <property name="expand">False</property>
1052- <property name="padding">5</property>
1053- <property name="position">1</property>
1054- </packing>
1055- </child>
1056- </widget>
1057- <packing>
1058- <property name="position">1</property>
1059- </packing>
1060- </child>
1061- </widget>
1062- </child>
1063- </widget>
1064- </child>
1065- <child>
1066- <widget class="GtkLabel" id="label_video_library1">
1067- <property name="visible">True</property>
1068- <property name="label" translatable="yes">&lt;b&gt;Video library&lt;/b&gt;</property>
1069- <property name="use_markup">True</property>
1070- </widget>
1071- <packing>
1072- <property name="type">label_item</property>
1073- </packing>
1074- </child>
1075- </widget>
1076- <packing>
1077- <property name="position">0</property>
1078- </packing>
1079- </child>
1080- <child>
1081- <widget class="GtkFrame" id="frame1">
1082- <property name="visible">True</property>
1083- <property name="label_xalign">0</property>
1084- <property name="shadow_type">none</property>
1085- <child>
1086- <widget class="GtkAlignment" id="alignment2">
1087- <property name="visible">True</property>
1088- <property name="left_padding">12</property>
1089- <child>
1090- <widget class="GtkCheckButton" id="video_metadata_checkbox">
1091- <property name="label" translatable="yes">Download movie and TV-series metadata</property>
1092- <property name="visible">True</property>
1093- <property name="can_focus">True</property>
1094- <property name="receives_default">False</property>
1095- <property name="use_underline">True</property>
1096- <property name="draw_indicator">True</property>
1097- <signal name="toggled" handler="on_checkbutton_video_metadata_toggled"/>
1098- </widget>
1099- </child>
1100- </widget>
1101- </child>
1102- <child>
1103- <widget class="GtkLabel" id="label2">
1104- <property name="visible">True</property>
1105- <property name="label" translatable="yes">&lt;b&gt;Video library settings&lt;/b&gt;</property>
1106- <property name="use_markup">True</property>
1107- </widget>
1108- <packing>
1109- <property name="type">label_item</property>
1110- </packing>
1111- </child>
1112- </widget>
1113- <packing>
1114- <property name="position">1</property>
1115- </packing>
1116- </child>
1117- </widget>
1118- <packing>
1119- <property name="position">0</property>
1120- </packing>
1121- </child>
1122- </widget>
1123- </child>
1124- <child>
1125- <widget class="GtkLabel" id="label_video3">
1126- <property name="visible">True</property>
1127- <property name="can_focus">True</property>
1128- <property name="has_focus">True</property>
1129- <property name="has_default">True</property>
1130- <property name="label" translatable="yes">Videos</property>
1131- </widget>
1132- <packing>
1133- <property name="tab_fill">False</property>
1134- <property name="type">tab</property>
1135- </packing>
1136- </child>
1137- <child>
1138- <widget class="GtkVBox" id="vbox_music">
1139- <property name="visible">True</property>
1140- <child>
1141- <widget class="GtkFrame" id="frame_music_folders3">
1142- <property name="visible">True</property>
1143- <property name="border_width">5</property>
1144- <property name="label_xalign">0</property>
1145- <property name="shadow_type">none</property>
1146- <child>
1147- <widget class="GtkAlignment" id="alignment9">
1148- <property name="visible">True</property>
1149- <property name="left_padding">12</property>
1150- <child>
1151- <widget class="GtkVBox" id="vbox12">
1152- <property name="visible">True</property>
1153- <child>
1154- <widget class="GtkLabel" id="label8">
1155- <property name="visible">True</property>
1156- <property name="xalign">0</property>
1157- <property name="label" translatable="yes">Entertainer music library scans data from the listed folders.</property>
1158- </widget>
1159- <packing>
1160- <property name="expand">False</property>
1161- <property name="padding">5</property>
1162- <property name="position">0</property>
1163- </packing>
1164- </child>
1165- <child>
1166- <widget class="GtkHBox" id="hbox12">
1167- <property name="visible">True</property>
1168- <child>
1169- <widget class="GtkScrolledWindow" id="scrolledwindow5">
1170- <property name="visible">True</property>
1171- <property name="can_focus">True</property>
1172- <property name="hscrollbar_policy">automatic</property>
1173- <property name="vscrollbar_policy">automatic</property>
1174- <property name="shadow_type">in</property>
1175- <child>
1176- <widget class="GtkTreeView" id="treeview_music">
1177- <property name="visible">True</property>
1178- <property name="can_focus">True</property>
1179- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1180- <property name="enable_search">False</property>
1181- </widget>
1182- </child>
1183- </widget>
1184- <packing>
1185- <property name="position">0</property>
1186- </packing>
1187- </child>
1188- <child>
1189- <widget class="GtkVButtonBox" id="vbuttonbox6">
1190- <property name="visible">True</property>
1191- <property name="spacing">5</property>
1192- <property name="layout_style">start</property>
1193- <child>
1194- <widget class="GtkButton" id="button_add_music">
1195- <property name="label">gtk-add</property>
1196- <property name="visible">True</property>
1197- <property name="can_focus">True</property>
1198- <property name="receives_default">False</property>
1199- <property name="use_stock">True</property>
1200- <signal name="clicked" handler="on_button_add_music_clicked"/>
1201- </widget>
1202- <packing>
1203- <property name="expand">False</property>
1204- <property name="fill">False</property>
1205- <property name="position">0</property>
1206- </packing>
1207- </child>
1208- <child>
1209- <widget class="GtkButton" id="button_remove_music">
1210- <property name="label">gtk-remove</property>
1211- <property name="visible">True</property>
1212- <property name="can_focus">True</property>
1213- <property name="receives_default">False</property>
1214- <property name="use_stock">True</property>
1215- <signal name="clicked" handler="on_button_remove_music_clicked"/>
1216- </widget>
1217- <packing>
1218- <property name="expand">False</property>
1219- <property name="fill">False</property>
1220- <property name="position">1</property>
1221- </packing>
1222- </child>
1223- <child>
1224- <widget class="GtkButton" id="button_edit_music">
1225- <property name="label">gtk-edit</property>
1226- <property name="visible">True</property>
1227- <property name="can_focus">True</property>
1228- <property name="receives_default">False</property>
1229- <property name="use_stock">True</property>
1230- <signal name="clicked" handler="on_button_edit_music_clicked"/>
1231- </widget>
1232- <packing>
1233- <property name="expand">False</property>
1234- <property name="fill">False</property>
1235- <property name="position">2</property>
1236- </packing>
1237- </child>
1238- </widget>
1239- <packing>
1240- <property name="expand">False</property>
1241- <property name="padding">5</property>
1242- <property name="position">1</property>
1243- </packing>
1244- </child>
1245- </widget>
1246- <packing>
1247- <property name="position">1</property>
1248- </packing>
1249- </child>
1250- </widget>
1251- </child>
1252- </widget>
1253- </child>
1254- <child>
1255- <widget class="GtkLabel" id="label_music_folders3">
1256- <property name="visible">True</property>
1257- <property name="label" translatable="yes">&lt;b&gt;Music library&lt;/b&gt;</property>
1258- <property name="use_markup">True</property>
1259- </widget>
1260- <packing>
1261- <property name="type">label_item</property>
1262- </packing>
1263- </child>
1264- </widget>
1265- <packing>
1266- <property name="position">0</property>
1267- </packing>
1268- </child>
1269- <child>
1270- <widget class="GtkFrame" id="frame_music_lib_settings3">
1271- <property name="visible">True</property>
1272- <property name="border_width">5</property>
1273- <property name="label_xalign">0</property>
1274- <property name="shadow_type">none</property>
1275- <child>
1276- <widget class="GtkAlignment" id="alignment10">
1277- <property name="visible">True</property>
1278- <property name="left_padding">12</property>
1279- <child>
1280- <widget class="GtkVBox" id="vbox13">
1281- <property name="visible">True</property>
1282- <property name="homogeneous">True</property>
1283- <child>
1284- <widget class="GtkCheckButton" id="art_checkbox">
1285- <property name="label" translatable="yes">Download album cover art</property>
1286- <property name="visible">True</property>
1287- <property name="can_focus">True</property>
1288- <property name="receives_default">False</property>
1289- <property name="use_underline">True</property>
1290- <property name="draw_indicator">True</property>
1291- <signal name="toggled" handler="on_art_checkbox_toggled"/>
1292- </widget>
1293- <packing>
1294- <property name="padding">5</property>
1295- <property name="position">0</property>
1296- </packing>
1297- </child>
1298- <child>
1299- <widget class="GtkCheckButton" id="lyrics_checkbox">
1300- <property name="label" translatable="yes">Download song lyrics</property>
1301- <property name="visible">True</property>
1302- <property name="can_focus">True</property>
1303- <property name="receives_default">False</property>
1304- <property name="use_underline">True</property>
1305- <property name="draw_indicator">True</property>
1306- <signal name="toggled" handler="on_lyrics_checkbox_toggled"/>
1307- </widget>
1308- <packing>
1309- <property name="padding">5</property>
1310- <property name="position">1</property>
1311- </packing>
1312- </child>
1313- </widget>
1314- </child>
1315- </widget>
1316- </child>
1317- <child>
1318- <widget class="GtkLabel" id="label9">
1319- <property name="visible">True</property>
1320- <property name="label" translatable="yes">&lt;b&gt;Music library settings&lt;/b&gt;</property>
1321- <property name="use_markup">True</property>
1322- </widget>
1323- <packing>
1324- <property name="type">label_item</property>
1325- </packing>
1326- </child>
1327- </widget>
1328- <packing>
1329- <property name="expand">False</property>
1330- <property name="position">1</property>
1331- </packing>
1332- </child>
1333- </widget>
1334- <packing>
1335- <property name="position">1</property>
1336- </packing>
1337- </child>
1338- <child>
1339- <widget class="GtkLabel" id="label10">
1340- <property name="visible">True</property>
1341- <property name="label" translatable="yes">Music</property>
1342- </widget>
1343- <packing>
1344- <property name="position">1</property>
1345- <property name="tab_fill">False</property>
1346- <property name="type">tab</property>
1347- </packing>
1348- </child>
1349- <child>
1350- <widget class="GtkVBox" id="vbox14">
1351- <property name="visible">True</property>
1352- <child>
1353- <widget class="GtkFrame" id="frame_image_folders3">
1354- <property name="visible">True</property>
1355- <property name="border_width">5</property>
1356- <property name="label_xalign">0</property>
1357- <property name="shadow_type">none</property>
1358- <child>
1359- <widget class="GtkAlignment" id="alignment11">
1360- <property name="visible">True</property>
1361- <property name="left_padding">12</property>
1362- <child>
1363- <widget class="GtkVBox" id="vbox15">
1364- <property name="visible">True</property>
1365- <child>
1366- <widget class="GtkLabel" id="label_music_tip3">
1367- <property name="visible">True</property>
1368- <property name="xalign">0</property>
1369- <property name="label" translatable="yes">Entertainer image library scans data from the listed folders.</property>
1370- </widget>
1371- <packing>
1372- <property name="expand">False</property>
1373- <property name="padding">5</property>
1374- <property name="position">0</property>
1375- </packing>
1376- </child>
1377- <child>
1378- <widget class="GtkHBox" id="hbox14">
1379- <property name="visible">True</property>
1380- <child>
1381- <widget class="GtkScrolledWindow" id="scrolledwindow6">
1382- <property name="visible">True</property>
1383- <property name="can_focus">True</property>
1384- <property name="hscrollbar_policy">automatic</property>
1385- <property name="vscrollbar_policy">automatic</property>
1386- <property name="shadow_type">in</property>
1387- <child>
1388- <widget class="GtkTreeView" id="treeview_images">
1389- <property name="visible">True</property>
1390- <property name="can_focus">True</property>
1391- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1392- <property name="enable_search">False</property>
1393- </widget>
1394- </child>
1395- </widget>
1396- <packing>
1397- <property name="position">0</property>
1398- </packing>
1399- </child>
1400- <child>
1401- <widget class="GtkVButtonBox" id="vbuttonbox7">
1402- <property name="visible">True</property>
1403- <property name="spacing">5</property>
1404- <property name="layout_style">start</property>
1405- <child>
1406- <widget class="GtkButton" id="button_add_images">
1407- <property name="label">gtk-add</property>
1408- <property name="visible">True</property>
1409- <property name="can_focus">True</property>
1410- <property name="receives_default">False</property>
1411- <property name="use_stock">True</property>
1412- <signal name="clicked" handler="on_button_add_images_clicked"/>
1413- </widget>
1414- <packing>
1415- <property name="expand">False</property>
1416- <property name="fill">False</property>
1417- <property name="position">0</property>
1418- </packing>
1419- </child>
1420- <child>
1421- <widget class="GtkButton" id="button_remove_images">
1422- <property name="label">gtk-remove</property>
1423- <property name="visible">True</property>
1424- <property name="can_focus">True</property>
1425- <property name="receives_default">False</property>
1426- <property name="use_stock">True</property>
1427- <signal name="clicked" handler="on_button_remove_images_clicked"/>
1428- </widget>
1429- <packing>
1430- <property name="expand">False</property>
1431- <property name="fill">False</property>
1432- <property name="position">1</property>
1433- </packing>
1434- </child>
1435- <child>
1436- <widget class="GtkButton" id="button_edit_images">
1437- <property name="label">gtk-edit</property>
1438- <property name="visible">True</property>
1439- <property name="can_focus">True</property>
1440- <property name="receives_default">False</property>
1441- <property name="use_stock">True</property>
1442- <signal name="clicked" handler="on_button_edit_images_clicked"/>
1443- </widget>
1444- <packing>
1445- <property name="expand">False</property>
1446- <property name="fill">False</property>
1447- <property name="position">2</property>
1448- </packing>
1449- </child>
1450- </widget>
1451- <packing>
1452- <property name="expand">False</property>
1453- <property name="padding">5</property>
1454- <property name="position">1</property>
1455- </packing>
1456- </child>
1457- </widget>
1458- <packing>
1459- <property name="position">1</property>
1460- </packing>
1461- </child>
1462- </widget>
1463- </child>
1464- </widget>
1465- </child>
1466- <child>
1467- <widget class="GtkLabel" id="label11">
1468- <property name="visible">True</property>
1469- <property name="label" translatable="yes">&lt;b&gt;Image library&lt;/b&gt;</property>
1470- <property name="use_markup">True</property>
1471- </widget>
1472- <packing>
1473- <property name="type">label_item</property>
1474- </packing>
1475- </child>
1476- </widget>
1477- <packing>
1478- <property name="position">0</property>
1479- </packing>
1480- </child>
1481- <child>
1482- <widget class="GtkFrame" id="frame_image_lib_settings3">
1483- <property name="visible">True</property>
1484- <property name="border_width">5</property>
1485- <property name="label_xalign">0</property>
1486- <property name="shadow_type">none</property>
1487- <child>
1488- <widget class="GtkAlignment" id="alignment12">
1489- <property name="visible">True</property>
1490- <property name="left_padding">12</property>
1491- <child>
1492- <widget class="GtkVBox" id="vbox16">
1493- <property name="visible">True</property>
1494- <child>
1495- <placeholder/>
1496- </child>
1497- <child>
1498- <widget class="GtkCheckButton" id="hidden_files_folders_checkbox">
1499- <property name="label" translatable="yes">Display hidden files and folders in image library</property>
1500- <property name="visible">True</property>
1501- <property name="can_focus">True</property>
1502- <property name="receives_default">False</property>
1503- <property name="use_underline">True</property>
1504- <property name="draw_indicator">True</property>
1505- <signal name="toggled" handler="on_hidden_files_folders_checkbox_toggled"/>
1506- </widget>
1507- <packing>
1508- <property name="padding">5</property>
1509- <property name="position">1</property>
1510- </packing>
1511- </child>
1512- </widget>
1513- </child>
1514- </widget>
1515- </child>
1516- <child>
1517- <widget class="GtkLabel" id="label_image_lib_settings3">
1518- <property name="visible">True</property>
1519- <property name="label" translatable="yes">&lt;b&gt;Image library settings&lt;/b&gt;</property>
1520- <property name="use_markup">True</property>
1521- </widget>
1522- <packing>
1523- <property name="type">label_item</property>
1524- </packing>
1525- </child>
1526- </widget>
1527- <packing>
1528- <property name="expand">False</property>
1529- <property name="position">1</property>
1530- </packing>
1531- </child>
1532- </widget>
1533- <packing>
1534- <property name="position">2</property>
1535- </packing>
1536- </child>
1537- <child>
1538- <widget class="GtkLabel" id="label_images3">
1539- <property name="visible">True</property>
1540- <property name="label" translatable="yes">Images</property>
1541- </widget>
1542- <packing>
1543- <property name="position">2</property>
1544- <property name="tab_fill">False</property>
1545- <property name="type">tab</property>
1546- </packing>
1547- </child>
1548- <child>
1549- <widget class="GtkVBox" id="vbox_feeds">
1550- <property name="visible">True</property>
1551- <child>
1552- <widget class="GtkFrame" id="frame_rss_feeds3">
1553- <property name="visible">True</property>
1554- <property name="border_width">5</property>
1555- <property name="label_xalign">0</property>
1556- <property name="shadow_type">none</property>
1557- <child>
1558- <widget class="GtkAlignment" id="alignment13">
1559- <property name="visible">True</property>
1560- <property name="left_padding">12</property>
1561- <child>
1562- <widget class="GtkVBox" id="vbox17">
1563- <property name="visible">True</property>
1564- <child>
1565- <widget class="GtkLabel" id="label_rss_tip3">
1566- <property name="visible">True</property>
1567- <property name="xalign">0</property>
1568- <property name="label" translatable="yes">Below is a list of RSS feeds that are displayd in Entertainer.</property>
1569- </widget>
1570- <packing>
1571- <property name="expand">False</property>
1572- <property name="padding">5</property>
1573- <property name="position">0</property>
1574- </packing>
1575- </child>
1576- <child>
1577- <widget class="GtkHBox" id="hbox16">
1578- <property name="visible">True</property>
1579- <child>
1580- <widget class="GtkScrolledWindow" id="scrolledwindow_rss3">
1581- <property name="visible">True</property>
1582- <property name="can_focus">True</property>
1583- <property name="hscrollbar_policy">automatic</property>
1584- <property name="vscrollbar_policy">automatic</property>
1585- <property name="shadow_type">in</property>
1586- <child>
1587- <widget class="GtkTreeView" id="treeview_feeds">
1588- <property name="visible">True</property>
1589- <property name="can_focus">True</property>
1590- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1591- <property name="enable_search">False</property>
1592- </widget>
1593- </child>
1594- </widget>
1595- <packing>
1596- <property name="position">0</property>
1597- </packing>
1598- </child>
1599- <child>
1600- <widget class="GtkVButtonBox" id="vbuttonbox8">
1601- <property name="visible">True</property>
1602- <property name="spacing">5</property>
1603- <property name="layout_style">start</property>
1604- <child>
1605- <widget class="GtkButton" id="button_add_feed">
1606- <property name="label">gtk-add</property>
1607- <property name="visible">True</property>
1608- <property name="can_focus">True</property>
1609- <property name="receives_default">False</property>
1610- <property name="tooltip" translatable="yes">Add RSS Feed</property>
1611- <property name="use_stock">True</property>
1612- <signal name="clicked" handler="on_button_add_feed_clicked"/>
1613- </widget>
1614- <packing>
1615- <property name="expand">False</property>
1616- <property name="fill">False</property>
1617- <property name="position">0</property>
1618- </packing>
1619- </child>
1620- <child>
1621- <widget class="GtkButton" id="button_remove_feed">
1622- <property name="label">gtk-remove</property>
1623- <property name="visible">True</property>
1624- <property name="can_focus">True</property>
1625- <property name="receives_default">False</property>
1626- <property name="tooltip" translatable="yes">Remove RSS Feed</property>
1627- <property name="use_stock">True</property>
1628- <signal name="clicked" handler="on_button_remove_feed_clicked"/>
1629- </widget>
1630- <packing>
1631- <property name="expand">False</property>
1632- <property name="fill">False</property>
1633- <property name="position">1</property>
1634- </packing>
1635- </child>
1636- <child>
1637- <widget class="GtkButton" id="button_edit_feed">
1638- <property name="label">gtk-edit</property>
1639- <property name="visible">True</property>
1640- <property name="can_focus">True</property>
1641- <property name="receives_default">False</property>
1642- <property name="tooltip" translatable="yes">Edit current item</property>
1643- <property name="use_stock">True</property>
1644- <signal name="clicked" handler="on_button_edit_feed_clicked"/>
1645- </widget>
1646- <packing>
1647- <property name="expand">False</property>
1648- <property name="fill">False</property>
1649- <property name="position">2</property>
1650- </packing>
1651- </child>
1652- <child>
1653- <widget class="GtkButton" id="button_open_list">
1654- <property name="label">gtk-open</property>
1655- <property name="visible">True</property>
1656- <property name="can_focus">True</property>
1657- <property name="receives_default">False</property>
1658- <property name="tooltip" translatable="yes">Add feeds from a datasource</property>
1659- <property name="use_stock">True</property>
1660- <signal name="clicked" handler="on_button_open_list_clicked"/>
1661- </widget>
1662- <packing>
1663- <property name="expand">False</property>
1664- <property name="fill">False</property>
1665- <property name="position">3</property>
1666- </packing>
1667- </child>
1668- </widget>
1669- <packing>
1670- <property name="expand">False</property>
1671- <property name="padding">5</property>
1672- <property name="position">1</property>
1673- </packing>
1674- </child>
1675- </widget>
1676- <packing>
1677- <property name="position">1</property>
1678- </packing>
1679- </child>
1680- </widget>
1681- </child>
1682- </widget>
1683- </child>
1684- <child>
1685- <widget class="GtkLabel" id="label_rss_sources3">
1686- <property name="visible">True</property>
1687- <property name="label" translatable="yes">&lt;b&gt;RSS feeds&lt;/b&gt;</property>
1688- <property name="use_markup">True</property>
1689- </widget>
1690- <packing>
1691- <property name="type">label_item</property>
1692- </packing>
1693- </child>
1694- </widget>
1695- <packing>
1696- <property name="position">0</property>
1697- </packing>
1698- </child>
1699- <child>
1700- <widget class="GtkFrame" id="frame_feed_settings3">
1701- <property name="visible">True</property>
1702- <property name="border_width">5</property>
1703- <property name="label_xalign">0</property>
1704- <property name="shadow_type">none</property>
1705- <child>
1706- <widget class="GtkAlignment" id="alignment14">
1707- <property name="visible">True</property>
1708- <property name="left_padding">12</property>
1709- <child>
1710- <widget class="GtkVBox" id="vbox18">
1711- <property name="visible">True</property>
1712- <child>
1713- <widget class="GtkHBox" id="hbox17">
1714- <property name="visible">True</property>
1715- <child>
1716- <widget class="GtkLabel" id="label12">
1717- <property name="visible">True</property>
1718- <property name="label" translatable="yes">Update all feeds every</property>
1719- </widget>
1720- <packing>
1721- <property name="expand">False</property>
1722- <property name="position">0</property>
1723- </packing>
1724- </child>
1725- <child>
1726- <widget class="GtkSpinButton" id="fetch_interval_spinbutton">
1727- <property name="visible">True</property>
1728- <property name="can_focus">True</property>
1729- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1730- <property name="adjustment">60 15 900 1 10 0</property>
1731- <property name="climb_rate">1</property>
1732- <property name="numeric">True</property>
1733- <signal name="value_changed" handler="on_fetch_interval_spinbutton_value_changed"/>
1734- </widget>
1735- <packing>
1736- <property name="expand">False</property>
1737- <property name="padding">5</property>
1738- <property name="position">1</property>
1739- </packing>
1740- </child>
1741- <child>
1742- <widget class="GtkLabel" id="label13">
1743- <property name="visible">True</property>
1744- <property name="label" translatable="yes">minutes.</property>
1745- </widget>
1746- <packing>
1747- <property name="expand">False</property>
1748- <property name="position">2</property>
1749- </packing>
1750- </child>
1751- </widget>
1752- <packing>
1753- <property name="expand">False</property>
1754- <property name="padding">10</property>
1755- <property name="position">0</property>
1756- </packing>
1757- </child>
1758- </widget>
1759- </child>
1760- </widget>
1761- </child>
1762- <child>
1763- <widget class="GtkLabel" id="label_rss_settings3">
1764- <property name="visible">True</property>
1765- <property name="label" translatable="yes">&lt;b&gt;Feed settings&lt;/b&gt;</property>
1766- <property name="use_markup">True</property>
1767- </widget>
1768- <packing>
1769- <property name="type">label_item</property>
1770- </packing>
1771- </child>
1772- </widget>
1773- <packing>
1774- <property name="expand">False</property>
1775- <property name="position">1</property>
1776- </packing>
1777- </child>
1778- </widget>
1779- <packing>
1780- <property name="position">3</property>
1781- </packing>
1782- </child>
1783- <child>
1784- <widget class="GtkLabel" id="label_rss3">
1785- <property name="visible">True</property>
1786- <property name="label" translatable="yes">RSS feeds</property>
1787- </widget>
1788- <packing>
1789- <property name="position">3</property>
1790- <property name="tab_fill">False</property>
1791- <property name="type">tab</property>
1792- </packing>
1793- </child>
1794- <child>
1795- <widget class="GtkVBox" id="vbox5">
1796- <property name="visible">True</property>
1797- <child>
1798- <widget class="GtkFrame" id="frame_video_lib3">
1799- <property name="visible">True</property>
1800- <property name="border_width">5</property>
1801- <property name="label_xalign">0</property>
1802- <property name="shadow_type">none</property>
1803- <child>
1804- <widget class="GtkAlignment" id="alignment5">
1805- <property name="visible">True</property>
1806- <property name="left_padding">12</property>
1807- <child>
1808- <widget class="GtkVBox" id="weather_location_list_area">
1809- <property name="visible">True</property>
1810- <child>
1811- <widget class="GtkLabel" id="label_weather_tip">
1812- <property name="visible">True</property>
1813- <property name="xalign">0</property>
1814- <property name="label" translatable="yes">Get weather conditions from the locations listed below.</property>
1815- <property name="single_line_mode">True</property>
1816- </widget>
1817- <packing>
1818- <property name="expand">False</property>
1819- <property name="padding">5</property>
1820- <property name="position">0</property>
1821- </packing>
1822- </child>
1823- <child>
1824- <widget class="GtkHBox" id="hbox4">
1825- <property name="visible">True</property>
1826- <child>
1827- <widget class="GtkScrolledWindow" id="scrolledwindow3">
1828- <property name="visible">True</property>
1829- <property name="can_focus">True</property>
1830- <property name="hscrollbar_policy">automatic</property>
1831- <property name="vscrollbar_policy">automatic</property>
1832- <property name="shadow_type">in</property>
1833- <child>
1834- <widget class="GtkTreeView" id="treeview_locations">
1835- <property name="visible">True</property>
1836- <property name="can_focus">True</property>
1837- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
1838- <property name="enable_search">False</property>
1839- </widget>
1840- </child>
1841- </widget>
1842- <packing>
1843- <property name="position">0</property>
1844- </packing>
1845- </child>
1846- <child>
1847- <widget class="GtkVButtonBox" id="vbuttonbox3">
1848- <property name="visible">True</property>
1849- <property name="spacing">5</property>
1850- <property name="layout_style">start</property>
1851- <child>
1852- <widget class="GtkButton" id="button_add_weather">
1853- <property name="label">gtk-new</property>
1854- <property name="visible">True</property>
1855- <property name="can_focus">True</property>
1856- <property name="has_focus">True</property>
1857- <property name="can_default">True</property>
1858- <property name="has_default">True</property>
1859- <property name="receives_default">False</property>
1860- <property name="use_stock">True</property>
1861- <signal name="clicked" handler="on_button_add_weather_clicked"/>
1862- </widget>
1863- <packing>
1864- <property name="expand">False</property>
1865- <property name="fill">False</property>
1866- <property name="position">0</property>
1867- </packing>
1868- </child>
1869- <child>
1870- <widget class="GtkButton" id="button_remove_weather">
1871- <property name="label">gtk-clear</property>
1872- <property name="visible">True</property>
1873- <property name="can_focus">True</property>
1874- <property name="receives_default">False</property>
1875- <property name="use_stock">True</property>
1876- <signal name="clicked" handler="on_button_remove_weather_clicked"/>
1877- </widget>
1878- <packing>
1879- <property name="expand">False</property>
1880- <property name="fill">False</property>
1881- <property name="position">1</property>
1882- </packing>
1883- </child>
1884- </widget>
1885- <packing>
1886- <property name="expand">False</property>
1887- <property name="padding">5</property>
1888- <property name="position">1</property>
1889- </packing>
1890- </child>
1891- </widget>
1892- <packing>
1893- <property name="position">1</property>
1894- </packing>
1895- </child>
1896- </widget>
1897- </child>
1898- </widget>
1899- </child>
1900- <child>
1901- <widget class="GtkLabel" id="label_weather_options">
1902- <property name="visible">True</property>
1903- <property name="label" translatable="yes">&lt;b&gt;Weather locations&lt;/b&gt;</property>
1904- <property name="use_markup">True</property>
1905- </widget>
1906- <packing>
1907- <property name="type">label_item</property>
1908- </packing>
1909- </child>
1910- </widget>
1911- <packing>
1912- <property name="position">0</property>
1913- </packing>
1914- </child>
1915- <child>
1916- <widget class="GtkFrame" id="frame4">
1917- <property name="visible">True</property>
1918- <property name="label_xalign">0</property>
1919- <property name="shadow_type">none</property>
1920- <child>
1921- <widget class="GtkAlignment" id="alignment7">
1922- <property name="visible">True</property>
1923- <property name="left_padding">12</property>
1924- <child>
1925- <widget class="GtkVBox" id="vbox7">
1926- <property name="visible">True</property>
1927- <child>
1928- <widget class="GtkCheckButton" id="weather_display_checkbox">
1929- <property name="label" translatable="yes">Display weather option in main menu</property>
1930- <property name="visible">True</property>
1931- <property name="can_focus">True</property>
1932- <property name="receives_default">False</property>
1933- <property name="use_underline">True</property>
1934- <property name="active">True</property>
1935- <property name="draw_indicator">True</property>
1936- <signal name="toggled" handler="on_weather_display_checkbox_toggled"/>
1937- </widget>
1938- <packing>
1939- <property name="fill">False</property>
1940- <property name="position">0</property>
1941- </packing>
1942- </child>
1943- </widget>
1944- </child>
1945- </widget>
1946- </child>
1947- <child>
1948- <widget class="GtkLabel" id="label7">
1949- <property name="visible">True</property>
1950- <property name="label" translatable="yes">&lt;b&gt;Weather settings&lt;/b&gt;</property>
1951- <property name="use_markup">True</property>
1952- </widget>
1953- <packing>
1954- <property name="type">label_item</property>
1955- </packing>
1956- </child>
1957- </widget>
1958- <packing>
1959- <property name="position">1</property>
1960- </packing>
1961- </child>
1962- </widget>
1963- <packing>
1964- <property name="position">4</property>
1965- </packing>
1966- </child>
1967- <child>
1968- <widget class="GtkLabel" id="label_weather">
1969- <property name="visible">True</property>
1970- <property name="yalign">0.40999999642372131</property>
1971- <property name="label" translatable="yes">Weather</property>
1972- </widget>
1973- <packing>
1974- <property name="position">4</property>
1975- <property name="tab_fill">False</property>
1976- <property name="type">tab</property>
1977- </packing>
1978- </child>
1979- <child>
1980- <widget class="GtkFrame" id="frame2">
1981- <property name="visible">True</property>
1982- <property name="border_width">5</property>
1983- <property name="label_xalign">0</property>
1984- <property name="shadow_type">none</property>
1985- <child>
1986- <widget class="GtkAlignment" id="alignment3">
1987- <property name="visible">True</property>
1988- <property name="left_padding">12</property>
1989- <child>
1990- <widget class="GtkVBox" id="vbox3">
1991- <property name="visible">True</property>
1992- <child>
1993- <widget class="GtkLabel" id="label5">
1994- <property name="visible">True</property>
1995- <property name="xpad">7</property>
1996- <property name="ypad">7</property>
1997- <property name="label" translatable="yes">Rebuilding cache means that all data is removed and then
1998+
1999+<widget class="GtkDialog" id="ContentManagementDialog">
2000+ <property name="border_width">5</property>
2001+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
2002+ <property name="title" translatable="yes">Content management</property>
2003+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
2004+ <property name="window_position">GTK_WIN_POS_NONE</property>
2005+ <property name="modal">True</property>
2006+ <property name="resizable">True</property>
2007+ <property name="destroy_with_parent">False</property>
2008+ <property name="icon_name">applications-multimedia</property>
2009+ <property name="decorated">True</property>
2010+ <property name="skip_taskbar_hint">False</property>
2011+ <property name="skip_pager_hint">False</property>
2012+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
2013+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
2014+ <property name="focus_on_map">True</property>
2015+ <property name="urgency_hint">False</property>
2016+ <property name="has_separator">False</property>
2017+ <signal name="destroy" handler="on_ContentManagementDialog_destroy"/>
2018+
2019+ <child internal-child="vbox">
2020+ <widget class="GtkVBox" id="dialog-layout">
2021+ <property name="visible">True</property>
2022+ <property name="homogeneous">False</property>
2023+ <property name="spacing">2</property>
2024+
2025+ <child internal-child="action_area">
2026+ <widget class="GtkHButtonBox" id="dialog-closebutton-area">
2027+ <property name="visible">True</property>
2028+ <property name="layout_style">GTK_BUTTONBOX_END</property>
2029+
2030+ <child>
2031+ <widget class="GtkButton" id="close_button">
2032+ <property name="visible">True</property>
2033+ <property name="can_focus">True</property>
2034+ <property name="label">gtk-close</property>
2035+ <property name="use_stock">True</property>
2036+ <property name="relief">GTK_RELIEF_NORMAL</property>
2037+ <property name="focus_on_click">True</property>
2038+ <property name="response_id">0</property>
2039+ <signal name="clicked" handler="on_close_button_clicked"/>
2040+ </widget>
2041+ </child>
2042+ </widget>
2043+ <packing>
2044+ <property name="padding">0</property>
2045+ <property name="expand">False</property>
2046+ <property name="fill">True</property>
2047+ <property name="pack_type">GTK_PACK_END</property>
2048+ </packing>
2049+ </child>
2050+
2051+ <child>
2052+ <widget class="GtkNotebook" id="tabs">
2053+ <property name="visible">True</property>
2054+ <property name="can_default">True</property>
2055+ <property name="has_default">True</property>
2056+ <property name="can_focus">True</property>
2057+ <property name="has_focus">True</property>
2058+ <property name="show_tabs">True</property>
2059+ <property name="show_border">True</property>
2060+ <property name="tab_pos">GTK_POS_TOP</property>
2061+ <property name="scrollable">False</property>
2062+ <property name="enable_popup">False</property>
2063+
2064+ <child>
2065+ <widget class="GtkVBox" id="vbox_videos">
2066+ <property name="visible">True</property>
2067+ <property name="homogeneous">False</property>
2068+ <property name="spacing">0</property>
2069+
2070+ <child>
2071+ <widget class="GtkVBox" id="vbox1">
2072+ <property name="visible">True</property>
2073+ <property name="homogeneous">False</property>
2074+ <property name="spacing">0</property>
2075+
2076+ <child>
2077+ <widget class="GtkFrame" id="frame_video_lib1">
2078+ <property name="border_width">5</property>
2079+ <property name="visible">True</property>
2080+ <property name="label_xalign">0</property>
2081+ <property name="label_yalign">0.5</property>
2082+ <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
2083+
2084+ <child>
2085+ <widget class="GtkAlignment" id="alignment1">
2086+ <property name="visible">True</property>
2087+ <property name="xalign">0.5</property>
2088+ <property name="yalign">0.5</property>
2089+ <property name="xscale">1</property>
2090+ <property name="yscale">1</property>
2091+ <property name="top_padding">0</property>
2092+ <property name="bottom_padding">0</property>
2093+ <property name="left_padding">12</property>
2094+ <property name="right_padding">0</property>
2095+
2096+ <child>
2097+ <widget class="GtkVBox" id="vbox2">
2098+ <property name="visible">True</property>
2099+ <property name="homogeneous">False</property>
2100+ <property name="spacing">0</property>
2101+
2102+ <child>
2103+ <widget class="GtkLabel" id="label_media_folder_tip1">
2104+ <property name="visible">True</property>
2105+ <property name="label" translatable="yes">Entertainer will catalog the media in the folders below.</property>
2106+ <property name="use_underline">False</property>
2107+ <property name="use_markup">False</property>
2108+ <property name="justify">GTK_JUSTIFY_LEFT</property>
2109+ <property name="wrap">True</property>
2110+ <property name="selectable">False</property>
2111+ <property name="xalign">0</property>
2112+ <property name="yalign">0</property>
2113+ <property name="xpad">0</property>
2114+ <property name="ypad">0</property>
2115+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2116+ <property name="width_chars">-1</property>
2117+ <property name="single_line_mode">True</property>
2118+ <property name="angle">0</property>
2119+ </widget>
2120+ <packing>
2121+ <property name="padding">5</property>
2122+ <property name="expand">False</property>
2123+ <property name="fill">True</property>
2124+ </packing>
2125+ </child>
2126+
2127+ <child>
2128+ <widget class="GtkHBox" id="hbox2">
2129+ <property name="visible">True</property>
2130+ <property name="homogeneous">False</property>
2131+ <property name="spacing">0</property>
2132+
2133+ <child>
2134+ <widget class="GtkScrolledWindow" id="scrolledwindow1">
2135+ <property name="visible">True</property>
2136+ <property name="can_focus">True</property>
2137+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
2138+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
2139+ <property name="shadow_type">GTK_SHADOW_NONE</property>
2140+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
2141+
2142+ <child>
2143+ <widget class="GtkTreeView" id="treeview_media">
2144+ <property name="visible">True</property>
2145+ <property name="can_focus">True</property>
2146+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
2147+ <property name="headers_visible">True</property>
2148+ <property name="rules_hint">False</property>
2149+ <property name="reorderable">False</property>
2150+ <property name="enable_search">False</property>
2151+ <property name="fixed_height_mode">False</property>
2152+ <property name="hover_selection">False</property>
2153+ <property name="hover_expand">False</property>
2154+ </widget>
2155+ </child>
2156+ </widget>
2157+ <packing>
2158+ <property name="padding">0</property>
2159+ <property name="expand">True</property>
2160+ <property name="fill">True</property>
2161+ </packing>
2162+ </child>
2163+
2164+ <child>
2165+ <widget class="GtkVButtonBox" id="vbuttonbox1">
2166+ <property name="visible">True</property>
2167+ <property name="layout_style">GTK_BUTTONBOX_DEFAULT_STYLE</property>
2168+ <property name="spacing">5</property>
2169+
2170+ <child>
2171+ <widget class="GtkButton" id="button_add_folder">
2172+ <property name="visible">True</property>
2173+ <property name="can_default">True</property>
2174+ <property name="has_default">True</property>
2175+ <property name="can_focus">True</property>
2176+ <property name="has_focus">True</property>
2177+ <property name="label">gtk-add</property>
2178+ <property name="use_stock">True</property>
2179+ <property name="relief">GTK_RELIEF_NORMAL</property>
2180+ <property name="focus_on_click">True</property>
2181+ <signal name="clicked" handler="on_button_add_media_clicked" last_modification_time="Sat, 11 Jul 2009 19:03:28 GMT"/>
2182+ </widget>
2183+ </child>
2184+
2185+ <child>
2186+ <widget class="GtkButton" id="button_remove_folder">
2187+ <property name="visible">True</property>
2188+ <property name="can_focus">True</property>
2189+ <property name="label">gtk-remove</property>
2190+ <property name="use_stock">True</property>
2191+ <property name="relief">GTK_RELIEF_NORMAL</property>
2192+ <property name="focus_on_click">True</property>
2193+ <signal name="clicked" handler="on_button_remove_media_clicked" last_modification_time="Sat, 11 Jul 2009 19:03:39 GMT"/>
2194+ </widget>
2195+ </child>
2196+
2197+ <child>
2198+ <widget class="GtkButton" id="button_edit_folder">
2199+ <property name="visible">True</property>
2200+ <property name="can_focus">True</property>
2201+ <property name="label">gtk-edit</property>
2202+ <property name="use_stock">True</property>
2203+ <property name="relief">GTK_RELIEF_NORMAL</property>
2204+ <property name="focus_on_click">True</property>
2205+ <signal name="clicked" handler="on_button_edit_media_clicked" last_modification_time="Sat, 11 Jul 2009 19:03:49 GMT"/>
2206+ </widget>
2207+ </child>
2208+ </widget>
2209+ <packing>
2210+ <property name="padding">5</property>
2211+ <property name="expand">False</property>
2212+ <property name="fill">True</property>
2213+ </packing>
2214+ </child>
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+ </widget>
2223+ </child>
2224+ </widget>
2225+ </child>
2226+
2227+ <child>
2228+ <widget class="GtkLabel" id="label_media_library">
2229+ <property name="visible">True</property>
2230+ <property name="label" translatable="yes">&lt;b&gt;Media Library&lt;/b&gt;</property>
2231+ <property name="use_underline">False</property>
2232+ <property name="use_markup">True</property>
2233+ <property name="justify">GTK_JUSTIFY_LEFT</property>
2234+ <property name="wrap">False</property>
2235+ <property name="selectable">False</property>
2236+ <property name="xalign">0.5</property>
2237+ <property name="yalign">0.5</property>
2238+ <property name="xpad">0</property>
2239+ <property name="ypad">0</property>
2240+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2241+ <property name="width_chars">-1</property>
2242+ <property name="single_line_mode">False</property>
2243+ <property name="angle">0</property>
2244+ </widget>
2245+ <packing>
2246+ <property name="type">label_item</property>
2247+ </packing>
2248+ </child>
2249+ </widget>
2250+ <packing>
2251+ <property name="padding">0</property>
2252+ <property name="expand">True</property>
2253+ <property name="fill">True</property>
2254+ </packing>
2255+ </child>
2256+
2257+ <child>
2258+ <widget class="GtkHBox" id="hbox20">
2259+ <property name="visible">True</property>
2260+ <property name="homogeneous">False</property>
2261+ <property name="spacing">0</property>
2262+
2263+ <child>
2264+ <widget class="GtkVBox" id="vbox23">
2265+ <property name="visible">True</property>
2266+ <property name="homogeneous">False</property>
2267+ <property name="spacing">0</property>
2268+
2269+ <child>
2270+ <widget class="GtkCheckButton" id="video_metadata_checkbox">
2271+ <property name="visible">True</property>
2272+ <property name="can_focus">True</property>
2273+ <property name="label" translatable="yes">Download movie and TV-series metadata</property>
2274+ <property name="use_underline">True</property>
2275+ <property name="relief">GTK_RELIEF_NORMAL</property>
2276+ <property name="focus_on_click">True</property>
2277+ <property name="active">False</property>
2278+ <property name="inconsistent">False</property>
2279+ <property name="draw_indicator">True</property>
2280+ <signal name="toggled" handler="on_checkbutton_video_metadata_toggled" last_modification_time="Sat, 11 Jul 2009 19:09:32 GMT"/>
2281+ </widget>
2282+ <packing>
2283+ <property name="padding">1</property>
2284+ <property name="expand">False</property>
2285+ <property name="fill">False</property>
2286+ </packing>
2287+ </child>
2288+
2289+ <child>
2290+ <widget class="GtkCheckButton" id="art_checkbox">
2291+ <property name="visible">True</property>
2292+ <property name="can_focus">True</property>
2293+ <property name="label" translatable="yes">Download album cover art</property>
2294+ <property name="use_underline">True</property>
2295+ <property name="relief">GTK_RELIEF_NORMAL</property>
2296+ <property name="focus_on_click">True</property>
2297+ <property name="active">False</property>
2298+ <property name="inconsistent">False</property>
2299+ <property name="draw_indicator">True</property>
2300+ <signal name="toggled" handler="on_art_checkbox_toggled"/>
2301+ </widget>
2302+ <packing>
2303+ <property name="padding">1</property>
2304+ <property name="expand">False</property>
2305+ <property name="fill">False</property>
2306+ </packing>
2307+ </child>
2308+
2309+ <child>
2310+ <widget class="GtkCheckButton" id="lyrics_checkbox">
2311+ <property name="visible">True</property>
2312+ <property name="can_focus">True</property>
2313+ <property name="label" translatable="yes">Download song lyrics</property>
2314+ <property name="use_underline">True</property>
2315+ <property name="relief">GTK_RELIEF_NORMAL</property>
2316+ <property name="focus_on_click">True</property>
2317+ <property name="active">False</property>
2318+ <property name="inconsistent">False</property>
2319+ <property name="draw_indicator">True</property>
2320+ <signal name="toggled" handler="on_lyrics_checkbox_toggled"/>
2321+ </widget>
2322+ <packing>
2323+ <property name="padding">1</property>
2324+ <property name="expand">False</property>
2325+ <property name="fill">False</property>
2326+ </packing>
2327+ </child>
2328+ </widget>
2329+ <packing>
2330+ <property name="padding">15</property>
2331+ <property name="expand">True</property>
2332+ <property name="fill">True</property>
2333+ </packing>
2334+ </child>
2335+ </widget>
2336+ <packing>
2337+ <property name="padding">10</property>
2338+ <property name="expand">True</property>
2339+ <property name="fill">True</property>
2340+ </packing>
2341+ </child>
2342+ </widget>
2343+ <packing>
2344+ <property name="padding">0</property>
2345+ <property name="expand">True</property>
2346+ <property name="fill">True</property>
2347+ </packing>
2348+ </child>
2349+ </widget>
2350+ <packing>
2351+ <property name="tab_expand">False</property>
2352+ <property name="tab_fill">True</property>
2353+ </packing>
2354+ </child>
2355+
2356+ <child>
2357+ <widget class="GtkLabel" id="label_media">
2358+ <property name="visible">True</property>
2359+ <property name="has_default">True</property>
2360+ <property name="can_focus">True</property>
2361+ <property name="has_focus">True</property>
2362+ <property name="label" translatable="yes">Media</property>
2363+ <property name="use_underline">False</property>
2364+ <property name="use_markup">False</property>
2365+ <property name="justify">GTK_JUSTIFY_LEFT</property>
2366+ <property name="wrap">False</property>
2367+ <property name="selectable">False</property>
2368+ <property name="xalign">0.5</property>
2369+ <property name="yalign">0.5</property>
2370+ <property name="xpad">0</property>
2371+ <property name="ypad">0</property>
2372+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2373+ <property name="width_chars">-1</property>
2374+ <property name="single_line_mode">False</property>
2375+ <property name="angle">0</property>
2376+ </widget>
2377+ <packing>
2378+ <property name="type">tab</property>
2379+ </packing>
2380+ </child>
2381+
2382+ <child>
2383+ <widget class="GtkVBox" id="vbox_feeds">
2384+ <property name="visible">True</property>
2385+ <property name="homogeneous">False</property>
2386+ <property name="spacing">0</property>
2387+
2388+ <child>
2389+ <widget class="GtkFrame" id="frame_rss_feeds3">
2390+ <property name="border_width">5</property>
2391+ <property name="visible">True</property>
2392+ <property name="label_xalign">0</property>
2393+ <property name="label_yalign">0.5</property>
2394+ <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
2395+
2396+ <child>
2397+ <widget class="GtkAlignment" id="alignment13">
2398+ <property name="visible">True</property>
2399+ <property name="xalign">0.5</property>
2400+ <property name="yalign">0.5</property>
2401+ <property name="xscale">1</property>
2402+ <property name="yscale">1</property>
2403+ <property name="top_padding">0</property>
2404+ <property name="bottom_padding">0</property>
2405+ <property name="left_padding">12</property>
2406+ <property name="right_padding">0</property>
2407+
2408+ <child>
2409+ <widget class="GtkVBox" id="vbox17">
2410+ <property name="visible">True</property>
2411+ <property name="homogeneous">False</property>
2412+ <property name="spacing">0</property>
2413+
2414+ <child>
2415+ <widget class="GtkLabel" id="label_rss_tip3">
2416+ <property name="visible">True</property>
2417+ <property name="label" translatable="yes">Below is a list of RSS feeds that are displayd in Entertainer.</property>
2418+ <property name="use_underline">False</property>
2419+ <property name="use_markup">False</property>
2420+ <property name="justify">GTK_JUSTIFY_LEFT</property>
2421+ <property name="wrap">False</property>
2422+ <property name="selectable">False</property>
2423+ <property name="xalign">0</property>
2424+ <property name="yalign">0.5</property>
2425+ <property name="xpad">0</property>
2426+ <property name="ypad">0</property>
2427+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2428+ <property name="width_chars">-1</property>
2429+ <property name="single_line_mode">False</property>
2430+ <property name="angle">0</property>
2431+ </widget>
2432+ <packing>
2433+ <property name="padding">5</property>
2434+ <property name="expand">False</property>
2435+ <property name="fill">True</property>
2436+ </packing>
2437+ </child>
2438+
2439+ <child>
2440+ <widget class="GtkHBox" id="hbox16">
2441+ <property name="visible">True</property>
2442+ <property name="homogeneous">False</property>
2443+ <property name="spacing">0</property>
2444+
2445+ <child>
2446+ <widget class="GtkScrolledWindow" id="scrolledwindow_rss3">
2447+ <property name="visible">True</property>
2448+ <property name="can_focus">True</property>
2449+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
2450+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
2451+ <property name="shadow_type">GTK_SHADOW_NONE</property>
2452+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
2453+
2454+ <child>
2455+ <widget class="GtkTreeView" id="treeview_feeds">
2456+ <property name="visible">True</property>
2457+ <property name="can_focus">True</property>
2458+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
2459+ <property name="headers_visible">True</property>
2460+ <property name="rules_hint">False</property>
2461+ <property name="reorderable">False</property>
2462+ <property name="enable_search">False</property>
2463+ <property name="fixed_height_mode">False</property>
2464+ <property name="hover_selection">False</property>
2465+ <property name="hover_expand">False</property>
2466+ </widget>
2467+ </child>
2468+ </widget>
2469+ <packing>
2470+ <property name="padding">0</property>
2471+ <property name="expand">True</property>
2472+ <property name="fill">True</property>
2473+ </packing>
2474+ </child>
2475+
2476+ <child>
2477+ <widget class="GtkVButtonBox" id="vbuttonbox8">
2478+ <property name="visible">True</property>
2479+ <property name="layout_style">GTK_BUTTONBOX_DEFAULT_STYLE</property>
2480+ <property name="spacing">5</property>
2481+
2482+ <child>
2483+ <widget class="GtkButton" id="button_add_feed">
2484+ <property name="visible">True</property>
2485+ <property name="tooltip" translatable="yes">Add RSS Feed</property>
2486+ <property name="can_focus">True</property>
2487+ <property name="label">gtk-add</property>
2488+ <property name="use_stock">True</property>
2489+ <property name="relief">GTK_RELIEF_NORMAL</property>
2490+ <property name="focus_on_click">True</property>
2491+ <signal name="clicked" handler="on_button_add_feed_clicked"/>
2492+ </widget>
2493+ </child>
2494+
2495+ <child>
2496+ <widget class="GtkButton" id="button_remove_feed">
2497+ <property name="visible">True</property>
2498+ <property name="tooltip" translatable="yes">Remove RSS Feed</property>
2499+ <property name="can_focus">True</property>
2500+ <property name="label">gtk-remove</property>
2501+ <property name="use_stock">True</property>
2502+ <property name="relief">GTK_RELIEF_NORMAL</property>
2503+ <property name="focus_on_click">True</property>
2504+ <signal name="clicked" handler="on_button_remove_feed_clicked"/>
2505+ </widget>
2506+ </child>
2507+
2508+ <child>
2509+ <widget class="GtkButton" id="button_edit_feed">
2510+ <property name="visible">True</property>
2511+ <property name="tooltip" translatable="yes">Edit current item</property>
2512+ <property name="can_focus">True</property>
2513+ <property name="label">gtk-edit</property>
2514+ <property name="use_stock">True</property>
2515+ <property name="relief">GTK_RELIEF_NORMAL</property>
2516+ <property name="focus_on_click">True</property>
2517+ <signal name="clicked" handler="on_button_edit_feed_clicked"/>
2518+ </widget>
2519+ </child>
2520+
2521+ <child>
2522+ <widget class="GtkButton" id="button_open_list">
2523+ <property name="visible">True</property>
2524+ <property name="tooltip" translatable="yes">Add feeds from a datasource</property>
2525+ <property name="can_focus">True</property>
2526+ <property name="label">gtk-open</property>
2527+ <property name="use_stock">True</property>
2528+ <property name="relief">GTK_RELIEF_NORMAL</property>
2529+ <property name="focus_on_click">True</property>
2530+ <signal name="clicked" handler="on_button_open_list_clicked"/>
2531+ </widget>
2532+ </child>
2533+ </widget>
2534+ <packing>
2535+ <property name="padding">5</property>
2536+ <property name="expand">False</property>
2537+ <property name="fill">True</property>
2538+ </packing>
2539+ </child>
2540+ </widget>
2541+ <packing>
2542+ <property name="padding">0</property>
2543+ <property name="expand">True</property>
2544+ <property name="fill">True</property>
2545+ </packing>
2546+ </child>
2547+ </widget>
2548+ </child>
2549+ </widget>
2550+ </child>
2551+
2552+ <child>
2553+ <widget class="GtkLabel" id="label_rss_sources3">
2554+ <property name="visible">True</property>
2555+ <property name="label" translatable="yes">&lt;b&gt;RSS feeds&lt;/b&gt;</property>
2556+ <property name="use_underline">False</property>
2557+ <property name="use_markup">True</property>
2558+ <property name="justify">GTK_JUSTIFY_LEFT</property>
2559+ <property name="wrap">False</property>
2560+ <property name="selectable">False</property>
2561+ <property name="xalign">0.5</property>
2562+ <property name="yalign">0.5</property>
2563+ <property name="xpad">0</property>
2564+ <property name="ypad">0</property>
2565+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2566+ <property name="width_chars">-1</property>
2567+ <property name="single_line_mode">False</property>
2568+ <property name="angle">0</property>
2569+ </widget>
2570+ <packing>
2571+ <property name="type">label_item</property>
2572+ </packing>
2573+ </child>
2574+ </widget>
2575+ <packing>
2576+ <property name="padding">0</property>
2577+ <property name="expand">True</property>
2578+ <property name="fill">True</property>
2579+ </packing>
2580+ </child>
2581+
2582+ <child>
2583+ <widget class="GtkFrame" id="frame_feed_settings3">
2584+ <property name="border_width">5</property>
2585+ <property name="visible">True</property>
2586+ <property name="label_xalign">0</property>
2587+ <property name="label_yalign">0.5</property>
2588+ <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
2589+
2590+ <child>
2591+ <widget class="GtkAlignment" id="alignment14">
2592+ <property name="visible">True</property>
2593+ <property name="xalign">0.5</property>
2594+ <property name="yalign">0.5</property>
2595+ <property name="xscale">1</property>
2596+ <property name="yscale">1</property>
2597+ <property name="top_padding">0</property>
2598+ <property name="bottom_padding">0</property>
2599+ <property name="left_padding">12</property>
2600+ <property name="right_padding">0</property>
2601+
2602+ <child>
2603+ <widget class="GtkVBox" id="vbox18">
2604+ <property name="visible">True</property>
2605+ <property name="homogeneous">False</property>
2606+ <property name="spacing">0</property>
2607+
2608+ <child>
2609+ <widget class="GtkHBox" id="hbox17">
2610+ <property name="visible">True</property>
2611+ <property name="homogeneous">False</property>
2612+ <property name="spacing">0</property>
2613+
2614+ <child>
2615+ <widget class="GtkLabel" id="label12">
2616+ <property name="visible">True</property>
2617+ <property name="label" translatable="yes">Update all feeds every</property>
2618+ <property name="use_underline">False</property>
2619+ <property name="use_markup">False</property>
2620+ <property name="justify">GTK_JUSTIFY_LEFT</property>
2621+ <property name="wrap">False</property>
2622+ <property name="selectable">False</property>
2623+ <property name="xalign">0.5</property>
2624+ <property name="yalign">0.5</property>
2625+ <property name="xpad">0</property>
2626+ <property name="ypad">0</property>
2627+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2628+ <property name="width_chars">-1</property>
2629+ <property name="single_line_mode">False</property>
2630+ <property name="angle">0</property>
2631+ </widget>
2632+ <packing>
2633+ <property name="padding">0</property>
2634+ <property name="expand">False</property>
2635+ <property name="fill">True</property>
2636+ </packing>
2637+ </child>
2638+
2639+ <child>
2640+ <widget class="GtkSpinButton" id="fetch_interval_spinbutton">
2641+ <property name="visible">True</property>
2642+ <property name="can_focus">True</property>
2643+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
2644+ <property name="climb_rate">1</property>
2645+ <property name="digits">0</property>
2646+ <property name="numeric">True</property>
2647+ <property name="update_policy">GTK_UPDATE_ALWAYS</property>
2648+ <property name="snap_to_ticks">False</property>
2649+ <property name="wrap">False</property>
2650+ <property name="adjustment">60 15 900 1 10 0</property>
2651+ <signal name="value_changed" handler="on_fetch_interval_spinbutton_value_changed"/>
2652+ </widget>
2653+ <packing>
2654+ <property name="padding">5</property>
2655+ <property name="expand">False</property>
2656+ <property name="fill">True</property>
2657+ </packing>
2658+ </child>
2659+
2660+ <child>
2661+ <widget class="GtkLabel" id="label13">
2662+ <property name="visible">True</property>
2663+ <property name="label" translatable="yes">minutes.</property>
2664+ <property name="use_underline">False</property>
2665+ <property name="use_markup">False</property>
2666+ <property name="justify">GTK_JUSTIFY_LEFT</property>
2667+ <property name="wrap">False</property>
2668+ <property name="selectable">False</property>
2669+ <property name="xalign">0.5</property>
2670+ <property name="yalign">0.5</property>
2671+ <property name="xpad">0</property>
2672+ <property name="ypad">0</property>
2673+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2674+ <property name="width_chars">-1</property>
2675+ <property name="single_line_mode">False</property>
2676+ <property name="angle">0</property>
2677+ </widget>
2678+ <packing>
2679+ <property name="padding">0</property>
2680+ <property name="expand">False</property>
2681+ <property name="fill">True</property>
2682+ </packing>
2683+ </child>
2684+ </widget>
2685+ <packing>
2686+ <property name="padding">10</property>
2687+ <property name="expand">False</property>
2688+ <property name="fill">True</property>
2689+ </packing>
2690+ </child>
2691+ </widget>
2692+ </child>
2693+ </widget>
2694+ </child>
2695+
2696+ <child>
2697+ <widget class="GtkLabel" id="label_rss_settings3">
2698+ <property name="visible">True</property>
2699+ <property name="label" translatable="yes">&lt;b&gt;Feed settings&lt;/b&gt;</property>
2700+ <property name="use_underline">False</property>
2701+ <property name="use_markup">True</property>
2702+ <property name="justify">GTK_JUSTIFY_LEFT</property>
2703+ <property name="wrap">False</property>
2704+ <property name="selectable">False</property>
2705+ <property name="xalign">0.5</property>
2706+ <property name="yalign">0.5</property>
2707+ <property name="xpad">0</property>
2708+ <property name="ypad">0</property>
2709+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2710+ <property name="width_chars">-1</property>
2711+ <property name="single_line_mode">False</property>
2712+ <property name="angle">0</property>
2713+ </widget>
2714+ <packing>
2715+ <property name="type">label_item</property>
2716+ </packing>
2717+ </child>
2718+ </widget>
2719+ <packing>
2720+ <property name="padding">0</property>
2721+ <property name="expand">False</property>
2722+ <property name="fill">True</property>
2723+ </packing>
2724+ </child>
2725+ </widget>
2726+ <packing>
2727+ <property name="tab_expand">False</property>
2728+ <property name="tab_fill">True</property>
2729+ </packing>
2730+ </child>
2731+
2732+ <child>
2733+ <widget class="GtkLabel" id="label_rss3">
2734+ <property name="visible">True</property>
2735+ <property name="label" translatable="yes">RSS feeds</property>
2736+ <property name="use_underline">False</property>
2737+ <property name="use_markup">False</property>
2738+ <property name="justify">GTK_JUSTIFY_LEFT</property>
2739+ <property name="wrap">False</property>
2740+ <property name="selectable">False</property>
2741+ <property name="xalign">0.5</property>
2742+ <property name="yalign">0.5</property>
2743+ <property name="xpad">0</property>
2744+ <property name="ypad">0</property>
2745+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2746+ <property name="width_chars">-1</property>
2747+ <property name="single_line_mode">False</property>
2748+ <property name="angle">0</property>
2749+ </widget>
2750+ <packing>
2751+ <property name="type">tab</property>
2752+ </packing>
2753+ </child>
2754+
2755+ <child>
2756+ <widget class="GtkVBox" id="vbox5">
2757+ <property name="visible">True</property>
2758+ <property name="homogeneous">False</property>
2759+ <property name="spacing">0</property>
2760+
2761+ <child>
2762+ <widget class="GtkFrame" id="frame_video_lib3">
2763+ <property name="border_width">5</property>
2764+ <property name="visible">True</property>
2765+ <property name="label_xalign">0</property>
2766+ <property name="label_yalign">0.5</property>
2767+ <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
2768+
2769+ <child>
2770+ <widget class="GtkAlignment" id="alignment5">
2771+ <property name="visible">True</property>
2772+ <property name="xalign">0.5</property>
2773+ <property name="yalign">0.5</property>
2774+ <property name="xscale">1</property>
2775+ <property name="yscale">1</property>
2776+ <property name="top_padding">0</property>
2777+ <property name="bottom_padding">0</property>
2778+ <property name="left_padding">12</property>
2779+ <property name="right_padding">0</property>
2780+
2781+ <child>
2782+ <widget class="GtkVBox" id="weather_location_list_area">
2783+ <property name="visible">True</property>
2784+ <property name="homogeneous">False</property>
2785+ <property name="spacing">0</property>
2786+
2787+ <child>
2788+ <widget class="GtkLabel" id="label_weather_tip">
2789+ <property name="visible">True</property>
2790+ <property name="label" translatable="yes">Get weather conditions from the locations listed below.</property>
2791+ <property name="use_underline">False</property>
2792+ <property name="use_markup">False</property>
2793+ <property name="justify">GTK_JUSTIFY_LEFT</property>
2794+ <property name="wrap">False</property>
2795+ <property name="selectable">False</property>
2796+ <property name="xalign">0</property>
2797+ <property name="yalign">0.5</property>
2798+ <property name="xpad">0</property>
2799+ <property name="ypad">0</property>
2800+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2801+ <property name="width_chars">-1</property>
2802+ <property name="single_line_mode">True</property>
2803+ <property name="angle">0</property>
2804+ </widget>
2805+ <packing>
2806+ <property name="padding">5</property>
2807+ <property name="expand">False</property>
2808+ <property name="fill">True</property>
2809+ </packing>
2810+ </child>
2811+
2812+ <child>
2813+ <widget class="GtkHBox" id="hbox4">
2814+ <property name="visible">True</property>
2815+ <property name="homogeneous">False</property>
2816+ <property name="spacing">0</property>
2817+
2818+ <child>
2819+ <widget class="GtkScrolledWindow" id="scrolledwindow3">
2820+ <property name="visible">True</property>
2821+ <property name="can_focus">True</property>
2822+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
2823+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
2824+ <property name="shadow_type">GTK_SHADOW_NONE</property>
2825+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
2826+
2827+ <child>
2828+ <widget class="GtkTreeView" id="treeview_locations">
2829+ <property name="visible">True</property>
2830+ <property name="can_focus">True</property>
2831+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
2832+ <property name="headers_visible">True</property>
2833+ <property name="rules_hint">False</property>
2834+ <property name="reorderable">False</property>
2835+ <property name="enable_search">False</property>
2836+ <property name="fixed_height_mode">False</property>
2837+ <property name="hover_selection">False</property>
2838+ <property name="hover_expand">False</property>
2839+ </widget>
2840+ </child>
2841+ </widget>
2842+ <packing>
2843+ <property name="padding">0</property>
2844+ <property name="expand">True</property>
2845+ <property name="fill">True</property>
2846+ </packing>
2847+ </child>
2848+
2849+ <child>
2850+ <widget class="GtkVButtonBox" id="vbuttonbox3">
2851+ <property name="visible">True</property>
2852+ <property name="layout_style">GTK_BUTTONBOX_DEFAULT_STYLE</property>
2853+ <property name="spacing">5</property>
2854+
2855+ <child>
2856+ <widget class="GtkButton" id="button_add_weather">
2857+ <property name="visible">True</property>
2858+ <property name="can_default">True</property>
2859+ <property name="has_default">True</property>
2860+ <property name="can_focus">True</property>
2861+ <property name="has_focus">True</property>
2862+ <property name="label">gtk-new</property>
2863+ <property name="use_stock">True</property>
2864+ <property name="relief">GTK_RELIEF_NORMAL</property>
2865+ <property name="focus_on_click">True</property>
2866+ <signal name="clicked" handler="on_button_add_weather_clicked"/>
2867+ </widget>
2868+ </child>
2869+
2870+ <child>
2871+ <widget class="GtkButton" id="button_remove_weather">
2872+ <property name="visible">True</property>
2873+ <property name="can_focus">True</property>
2874+ <property name="label">gtk-clear</property>
2875+ <property name="use_stock">True</property>
2876+ <property name="relief">GTK_RELIEF_NORMAL</property>
2877+ <property name="focus_on_click">True</property>
2878+ <signal name="clicked" handler="on_button_remove_weather_clicked"/>
2879+ </widget>
2880+ </child>
2881+ </widget>
2882+ <packing>
2883+ <property name="padding">5</property>
2884+ <property name="expand">False</property>
2885+ <property name="fill">True</property>
2886+ </packing>
2887+ </child>
2888+ </widget>
2889+ <packing>
2890+ <property name="padding">0</property>
2891+ <property name="expand">True</property>
2892+ <property name="fill">True</property>
2893+ </packing>
2894+ </child>
2895+ </widget>
2896+ </child>
2897+ </widget>
2898+ </child>
2899+
2900+ <child>
2901+ <widget class="GtkLabel" id="label_weather_options">
2902+ <property name="visible">True</property>
2903+ <property name="label" translatable="yes">&lt;b&gt;Weather locations&lt;/b&gt;</property>
2904+ <property name="use_underline">False</property>
2905+ <property name="use_markup">True</property>
2906+ <property name="justify">GTK_JUSTIFY_LEFT</property>
2907+ <property name="wrap">False</property>
2908+ <property name="selectable">False</property>
2909+ <property name="xalign">0.5</property>
2910+ <property name="yalign">0.5</property>
2911+ <property name="xpad">0</property>
2912+ <property name="ypad">0</property>
2913+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2914+ <property name="width_chars">-1</property>
2915+ <property name="single_line_mode">False</property>
2916+ <property name="angle">0</property>
2917+ </widget>
2918+ <packing>
2919+ <property name="type">label_item</property>
2920+ </packing>
2921+ </child>
2922+ </widget>
2923+ <packing>
2924+ <property name="padding">0</property>
2925+ <property name="expand">True</property>
2926+ <property name="fill">True</property>
2927+ </packing>
2928+ </child>
2929+
2930+ <child>
2931+ <widget class="GtkFrame" id="frame4">
2932+ <property name="visible">True</property>
2933+ <property name="label_xalign">0</property>
2934+ <property name="label_yalign">0.5</property>
2935+ <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
2936+
2937+ <child>
2938+ <widget class="GtkAlignment" id="alignment7">
2939+ <property name="visible">True</property>
2940+ <property name="xalign">0.5</property>
2941+ <property name="yalign">0.5</property>
2942+ <property name="xscale">1</property>
2943+ <property name="yscale">1</property>
2944+ <property name="top_padding">0</property>
2945+ <property name="bottom_padding">0</property>
2946+ <property name="left_padding">12</property>
2947+ <property name="right_padding">0</property>
2948+
2949+ <child>
2950+ <widget class="GtkVBox" id="vbox7">
2951+ <property name="visible">True</property>
2952+ <property name="homogeneous">False</property>
2953+ <property name="spacing">0</property>
2954+
2955+ <child>
2956+ <widget class="GtkCheckButton" id="weather_display_checkbox">
2957+ <property name="visible">True</property>
2958+ <property name="can_focus">True</property>
2959+ <property name="label" translatable="yes">Display weather option in main menu</property>
2960+ <property name="use_underline">True</property>
2961+ <property name="relief">GTK_RELIEF_NORMAL</property>
2962+ <property name="focus_on_click">True</property>
2963+ <property name="active">True</property>
2964+ <property name="inconsistent">False</property>
2965+ <property name="draw_indicator">True</property>
2966+ <signal name="toggled" handler="on_weather_display_checkbox_toggled"/>
2967+ </widget>
2968+ <packing>
2969+ <property name="padding">0</property>
2970+ <property name="expand">True</property>
2971+ <property name="fill">False</property>
2972+ </packing>
2973+ </child>
2974+ </widget>
2975+ </child>
2976+ </widget>
2977+ </child>
2978+
2979+ <child>
2980+ <widget class="GtkLabel" id="label7">
2981+ <property name="visible">True</property>
2982+ <property name="label" translatable="yes">&lt;b&gt;Weather settings&lt;/b&gt;</property>
2983+ <property name="use_underline">False</property>
2984+ <property name="use_markup">True</property>
2985+ <property name="justify">GTK_JUSTIFY_LEFT</property>
2986+ <property name="wrap">False</property>
2987+ <property name="selectable">False</property>
2988+ <property name="xalign">0.5</property>
2989+ <property name="yalign">0.5</property>
2990+ <property name="xpad">0</property>
2991+ <property name="ypad">0</property>
2992+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
2993+ <property name="width_chars">-1</property>
2994+ <property name="single_line_mode">False</property>
2995+ <property name="angle">0</property>
2996+ </widget>
2997+ <packing>
2998+ <property name="type">label_item</property>
2999+ </packing>
3000+ </child>
3001+ </widget>
3002+ <packing>
3003+ <property name="padding">0</property>
3004+ <property name="expand">True</property>
3005+ <property name="fill">True</property>
3006+ </packing>
3007+ </child>
3008+ </widget>
3009+ <packing>
3010+ <property name="tab_expand">False</property>
3011+ <property name="tab_fill">True</property>
3012+ </packing>
3013+ </child>
3014+
3015+ <child>
3016+ <widget class="GtkLabel" id="label_weather">
3017+ <property name="visible">True</property>
3018+ <property name="label" translatable="yes">Weather</property>
3019+ <property name="use_underline">False</property>
3020+ <property name="use_markup">False</property>
3021+ <property name="justify">GTK_JUSTIFY_LEFT</property>
3022+ <property name="wrap">False</property>
3023+ <property name="selectable">False</property>
3024+ <property name="xalign">0.5</property>
3025+ <property name="yalign">0.409999996424</property>
3026+ <property name="xpad">0</property>
3027+ <property name="ypad">0</property>
3028+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
3029+ <property name="width_chars">-1</property>
3030+ <property name="single_line_mode">False</property>
3031+ <property name="angle">0</property>
3032+ </widget>
3033+ <packing>
3034+ <property name="type">tab</property>
3035+ </packing>
3036+ </child>
3037+
3038+ <child>
3039+ <widget class="GtkFrame" id="frame2">
3040+ <property name="border_width">5</property>
3041+ <property name="visible">True</property>
3042+ <property name="label_xalign">0</property>
3043+ <property name="label_yalign">0.5</property>
3044+ <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
3045+
3046+ <child>
3047+ <widget class="GtkAlignment" id="alignment3">
3048+ <property name="visible">True</property>
3049+ <property name="xalign">0.5</property>
3050+ <property name="yalign">0.5</property>
3051+ <property name="xscale">1</property>
3052+ <property name="yscale">1</property>
3053+ <property name="top_padding">0</property>
3054+ <property name="bottom_padding">0</property>
3055+ <property name="left_padding">12</property>
3056+ <property name="right_padding">0</property>
3057+
3058+ <child>
3059+ <widget class="GtkVBox" id="vbox3">
3060+ <property name="visible">True</property>
3061+ <property name="homogeneous">False</property>
3062+ <property name="spacing">0</property>
3063+
3064+ <child>
3065+ <widget class="GtkLabel" id="label5">
3066+ <property name="visible">True</property>
3067+ <property name="label" translatable="yes">Rebuilding cache means that all data is removed and then
3068 folders are indexed again. This fixes broken media cache.</property>
3069- </widget>
3070- <packing>
3071- <property name="position">0</property>
3072- </packing>
3073- </child>
3074- <child>
3075- <widget class="GtkButton" id="button_video_rebuild">
3076- <property name="label" translatable="yes">Rebuild video cache</property>
3077- <property name="visible">True</property>
3078- <property name="can_focus">True</property>
3079- <property name="receives_default">False</property>
3080- <property name="border_width">5</property>
3081- <property name="use_underline">True</property>
3082- <signal name="clicked" handler="on_button_video_rebuild_clicked"/>
3083- </widget>
3084- <packing>
3085- <property name="position">1</property>
3086- </packing>
3087- </child>
3088- <child>
3089- <widget class="GtkButton" id="button_music_rebuild">
3090- <property name="label" translatable="yes">Rebuild music cache</property>
3091- <property name="visible">True</property>
3092- <property name="can_focus">True</property>
3093- <property name="receives_default">False</property>
3094- <property name="border_width">5</property>
3095- <property name="use_underline">True</property>
3096- <signal name="clicked" handler="on_button_music_rebuild_clicked"/>
3097- </widget>
3098- <packing>
3099- <property name="position">2</property>
3100- </packing>
3101- </child>
3102- <child>
3103- <widget class="GtkButton" id="button_image_rebuild">
3104- <property name="label" translatable="yes">Rebuild image cache</property>
3105- <property name="visible">True</property>
3106- <property name="can_focus">True</property>
3107- <property name="receives_default">False</property>
3108- <property name="border_width">5</property>
3109- <property name="use_underline">True</property>
3110- <signal name="clicked" handler="on_button_image_rebuild_clicked"/>
3111- </widget>
3112- <packing>
3113- <property name="position">3</property>
3114- </packing>
3115- </child>
3116- <child>
3117- <widget class="GtkButton" id="button_feed_rebuild">
3118- <property name="label" translatable="yes">Rebuild RSS-feed cache</property>
3119- <property name="visible">True</property>
3120- <property name="can_focus">True</property>
3121- <property name="receives_default">False</property>
3122- <property name="border_width">5</property>
3123- <property name="use_underline">True</property>
3124- <property name="focus_on_click">False</property>
3125- <signal name="clicked" handler="on_button_feed_rebuild_clicked"/>
3126- </widget>
3127- <packing>
3128- <property name="position">4</property>
3129- </packing>
3130- </child>
3131- </widget>
3132- </child>
3133- </widget>
3134- </child>
3135- <child>
3136- <widget class="GtkLabel" id="label4">
3137- <property name="visible">True</property>
3138- <property name="label" translatable="yes">&lt;b&gt;Media cache management&lt;/b&gt;</property>
3139- <property name="use_markup">True</property>
3140- </widget>
3141- <packing>
3142- <property name="type">label_item</property>
3143- </packing>
3144- </child>
3145- </widget>
3146- <packing>
3147- <property name="position">5</property>
3148- </packing>
3149- </child>
3150- <child>
3151- <widget class="GtkLabel" id="label3">
3152- <property name="visible">True</property>
3153- <property name="label" translatable="yes">Reset</property>
3154- </widget>
3155- <packing>
3156- <property name="position">5</property>
3157- <property name="tab_fill">False</property>
3158- <property name="type">tab</property>
3159- </packing>
3160- </child>
3161- </widget>
3162- <packing>
3163- <property name="position">1</property>
3164- </packing>
3165- </child>
3166- <child internal-child="action_area">
3167- <widget class="GtkHButtonBox" id="dialog-closebutton-area">
3168- <property name="visible">True</property>
3169- <property name="layout_style">end</property>
3170- <child>
3171- <widget class="GtkButton" id="close_button">
3172- <property name="label">gtk-close</property>
3173- <property name="visible">True</property>
3174- <property name="can_focus">True</property>
3175- <property name="receives_default">False</property>
3176- <property name="use_stock">True</property>
3177- <signal name="clicked" handler="on_close_button_clicked"/>
3178- </widget>
3179- <packing>
3180- <property name="expand">False</property>
3181- <property name="fill">False</property>
3182- <property name="position">0</property>
3183- </packing>
3184- </child>
3185- </widget>
3186- <packing>
3187- <property name="expand">False</property>
3188- <property name="pack_type">end</property>
3189- <property name="position">0</property>
3190- </packing>
3191- </child>
3192- </widget>
3193- </child>
3194- </widget>
3195- <widget class="GtkDialog" id="url_dialog">
3196- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
3197- <property name="border_width">5</property>
3198- <property name="resizable">False</property>
3199- <property name="modal">True</property>
3200- <property name="window_position">center-on-parent</property>
3201- <property name="destroy_with_parent">True</property>
3202- <property name="icon_name">gtk-edit</property>
3203- <property name="type_hint">normal</property>
3204- <property name="skip_taskbar_hint">True</property>
3205- <property name="has_separator">False</property>
3206- <signal name="delete_event" handler="on_url_dialog_delete_event"/>
3207- <child internal-child="vbox">
3208- <widget class="GtkVBox" id="dialog-vbox2">
3209- <property name="visible">True</property>
3210- <property name="spacing">2</property>
3211- <child>
3212- <widget class="GtkHBox" id="hbox1">
3213- <property name="visible">True</property>
3214- <child>
3215- <widget class="GtkLabel" id="label1">
3216- <property name="visible">True</property>
3217- <property name="label" translatable="yes">URL:</property>
3218- </widget>
3219- <packing>
3220- <property name="expand">False</property>
3221- <property name="padding">5</property>
3222- <property name="position">0</property>
3223- </packing>
3224- </child>
3225- <child>
3226- <widget class="GtkEntry" id="url_entry">
3227- <property name="visible">True</property>
3228- <property name="can_focus">True</property>
3229- <property name="has_focus">True</property>
3230- <property name="can_default">True</property>
3231- <property name="has_default">True</property>
3232- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
3233- </widget>
3234- <packing>
3235- <property name="position">1</property>
3236- </packing>
3237- </child>
3238- </widget>
3239- <packing>
3240- <property name="position">1</property>
3241- </packing>
3242- </child>
3243- <child internal-child="action_area">
3244- <widget class="GtkHButtonBox" id="dialog-action_area2">
3245- <property name="visible">True</property>
3246- <property name="layout_style">end</property>
3247- <child>
3248- <widget class="GtkButton" id="url_dialog_cancel_button">
3249- <property name="label">gtk-cancel</property>
3250- <property name="visible">True</property>
3251- <property name="can_focus">True</property>
3252- <property name="receives_default">False</property>
3253- <property name="use_stock">True</property>
3254- <signal name="clicked" handler="on_url_dialog_cancel_button_clicked"/>
3255- </widget>
3256- <packing>
3257- <property name="expand">False</property>
3258- <property name="fill">False</property>
3259- <property name="position">0</property>
3260- </packing>
3261- </child>
3262- <child>
3263- <widget class="GtkButton" id="url_dialog_ok_button">
3264- <property name="label">gtk-ok</property>
3265- <property name="visible">True</property>
3266- <property name="can_focus">True</property>
3267- <property name="receives_default">False</property>
3268- <property name="use_stock">True</property>
3269- <signal name="clicked" handler="on_url_dialog_ok_button_clicked"/>
3270- </widget>
3271- <packing>
3272- <property name="expand">False</property>
3273- <property name="fill">False</property>
3274- <property name="position">1</property>
3275- </packing>
3276- </child>
3277- </widget>
3278- <packing>
3279- <property name="expand">False</property>
3280- <property name="pack_type">end</property>
3281- <property name="position">0</property>
3282- </packing>
3283- </child>
3284- </widget>
3285- </child>
3286- </widget>
3287- <widget class="GtkDialog" id="weather_search_dialog">
3288- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
3289- <property name="border_width">5</property>
3290- <property name="window_position">center-on-parent</property>
3291- <property name="type_hint">dialog</property>
3292- <property name="has_separator">False</property>
3293- <child internal-child="vbox">
3294- <widget class="GtkVBox" id="vbox20">
3295- <property name="visible">True</property>
3296- <property name="spacing">2</property>
3297- <child>
3298- <widget class="GtkVBox" id="vbox21">
3299- <property name="visible">True</property>
3300- <child>
3301- <widget class="GtkFrame" id="frame6">
3302- <property name="visible">True</property>
3303- <property name="label_xalign">0</property>
3304- <property name="shadow_type">none</property>
3305- <child>
3306- <widget class="GtkAlignment" id="alignment16">
3307- <property name="visible">True</property>
3308- <property name="top_padding">5</property>
3309- <property name="left_padding">12</property>
3310- <child>
3311- <widget class="GtkHBox" id="hbox18">
3312- <property name="visible">True</property>
3313- <child>
3314- <widget class="GtkLabel" id="label19">
3315- <property name="visible">True</property>
3316- <property name="label" translatable="yes">City:</property>
3317- </widget>
3318- <packing>
3319- <property name="expand">False</property>
3320- <property name="position">0</property>
3321- </packing>
3322- </child>
3323- <child>
3324- <widget class="GtkEntry" id="location_entry">
3325- <property name="visible">True</property>
3326- <property name="can_focus">True</property>
3327- <property name="has_focus">True</property>
3328- <property name="can_default">True</property>
3329- <property name="has_default">True</property>
3330- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
3331- <signal name="activate" handler="on_location_entry_activate"/>
3332- </widget>
3333- <packing>
3334- <property name="padding">5</property>
3335- <property name="position">1</property>
3336- </packing>
3337- </child>
3338- <child>
3339- <widget class="GtkButton" id="location_find_button">
3340- <property name="label">gtk-find</property>
3341- <property name="visible">True</property>
3342- <property name="can_focus">True</property>
3343- <property name="receives_default">False</property>
3344- <property name="use_stock">True</property>
3345- <signal name="clicked" handler="on_location_find_button_clicked"/>
3346- </widget>
3347- <packing>
3348- <property name="padding">5</property>
3349- <property name="position">2</property>
3350- </packing>
3351- </child>
3352- </widget>
3353- </child>
3354- </widget>
3355- </child>
3356- <child>
3357- <widget class="GtkLabel" id="label20">
3358- <property name="visible">True</property>
3359- <property name="label" translatable="yes">&lt;b&gt;Search for location&lt;/b&gt;</property>
3360- <property name="use_markup">True</property>
3361- </widget>
3362- <packing>
3363- <property name="type">label_item</property>
3364- </packing>
3365- </child>
3366- </widget>
3367- <packing>
3368- <property name="expand">False</property>
3369- <property name="padding">5</property>
3370- <property name="position">0</property>
3371- </packing>
3372- </child>
3373- <child>
3374- <widget class="GtkFrame" id="frame7">
3375- <property name="visible">True</property>
3376- <property name="label_xalign">0</property>
3377- <property name="shadow_type">none</property>
3378- <child>
3379- <widget class="GtkAlignment" id="alignment17">
3380- <property name="visible">True</property>
3381- <property name="left_padding">12</property>
3382- <child>
3383- <widget class="GtkScrolledWindow" id="scrolledwindow7">
3384- <property name="visible">True</property>
3385- <property name="can_focus">True</property>
3386- <property name="border_width">5</property>
3387- <property name="hscrollbar_policy">never</property>
3388- <property name="vscrollbar_policy">automatic</property>
3389- <property name="shadow_type">etched-in</property>
3390- <child>
3391- <widget class="GtkTreeView" id="location_results_treeview">
3392- <property name="visible">True</property>
3393- <property name="can_focus">True</property>
3394- <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
3395- </widget>
3396- </child>
3397- </widget>
3398- </child>
3399- </widget>
3400- </child>
3401- <child>
3402- <widget class="GtkLabel" id="label21">
3403- <property name="visible">True</property>
3404- <property name="label" translatable="yes">&lt;b&gt;Search result&lt;/b&gt;</property>
3405- <property name="use_markup">True</property>
3406- </widget>
3407- <packing>
3408- <property name="type">label_item</property>
3409- </packing>
3410- </child>
3411- </widget>
3412- <packing>
3413- <property name="padding">5</property>
3414- <property name="position">1</property>
3415- </packing>
3416- </child>
3417- </widget>
3418- <packing>
3419- <property name="position">1</property>
3420- </packing>
3421- </child>
3422- <child internal-child="action_area">
3423- <widget class="GtkHButtonBox" id="hbuttonbox1">
3424- <property name="visible">True</property>
3425- <property name="layout_style">end</property>
3426- <child>
3427- <widget class="GtkButton" id="location_button_cancel">
3428- <property name="label">gtk-cancel</property>
3429- <property name="visible">True</property>
3430- <property name="can_focus">True</property>
3431- <property name="receives_default">False</property>
3432- <property name="use_stock">True</property>
3433- <signal name="clicked" handler="on_location_cancel_button_clicked"/>
3434- </widget>
3435- <packing>
3436- <property name="expand">False</property>
3437- <property name="fill">False</property>
3438- <property name="position">0</property>
3439- </packing>
3440- </child>
3441- <child>
3442- <widget class="GtkButton" id="location_add_button">
3443- <property name="label">gtk-add</property>
3444- <property name="visible">True</property>
3445- <property name="can_focus">True</property>
3446- <property name="receives_default">False</property>
3447- <property name="use_stock">True</property>
3448- <signal name="clicked" handler="on_location_add_button_clicked"/>
3449- </widget>
3450- <packing>
3451- <property name="expand">False</property>
3452- <property name="fill">False</property>
3453- <property name="position">1</property>
3454- </packing>
3455- </child>
3456- </widget>
3457- <packing>
3458- <property name="expand">False</property>
3459- <property name="pack_type">end</property>
3460- <property name="position">0</property>
3461- </packing>
3462- </child>
3463- </widget>
3464- </child>
3465- </widget>
3466+ <property name="use_underline">False</property>
3467+ <property name="use_markup">False</property>
3468+ <property name="justify">GTK_JUSTIFY_LEFT</property>
3469+ <property name="wrap">False</property>
3470+ <property name="selectable">False</property>
3471+ <property name="xalign">0.5</property>
3472+ <property name="yalign">0.5</property>
3473+ <property name="xpad">7</property>
3474+ <property name="ypad">7</property>
3475+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
3476+ <property name="width_chars">-1</property>
3477+ <property name="single_line_mode">False</property>
3478+ <property name="angle">0</property>
3479+ </widget>
3480+ <packing>
3481+ <property name="padding">0</property>
3482+ <property name="expand">True</property>
3483+ <property name="fill">True</property>
3484+ </packing>
3485+ </child>
3486+
3487+ <child>
3488+ <widget class="GtkButton" id="button_video_rebuild">
3489+ <property name="border_width">5</property>
3490+ <property name="visible">True</property>
3491+ <property name="can_focus">True</property>
3492+ <property name="label" translatable="yes">Rebuild video cache</property>
3493+ <property name="use_underline">True</property>
3494+ <property name="relief">GTK_RELIEF_NORMAL</property>
3495+ <property name="focus_on_click">True</property>
3496+ <signal name="clicked" handler="on_button_video_rebuild_clicked"/>
3497+ </widget>
3498+ <packing>
3499+ <property name="padding">0</property>
3500+ <property name="expand">True</property>
3501+ <property name="fill">True</property>
3502+ </packing>
3503+ </child>
3504+
3505+ <child>
3506+ <widget class="GtkButton" id="button_music_rebuild">
3507+ <property name="border_width">5</property>
3508+ <property name="visible">True</property>
3509+ <property name="can_focus">True</property>
3510+ <property name="label" translatable="yes">Rebuild music cache</property>
3511+ <property name="use_underline">True</property>
3512+ <property name="relief">GTK_RELIEF_NORMAL</property>
3513+ <property name="focus_on_click">True</property>
3514+ <signal name="clicked" handler="on_button_music_rebuild_clicked"/>
3515+ </widget>
3516+ <packing>
3517+ <property name="padding">0</property>
3518+ <property name="expand">True</property>
3519+ <property name="fill">True</property>
3520+ </packing>
3521+ </child>
3522+
3523+ <child>
3524+ <widget class="GtkButton" id="button_image_rebuild">
3525+ <property name="border_width">5</property>
3526+ <property name="visible">True</property>
3527+ <property name="can_focus">True</property>
3528+ <property name="label" translatable="yes">Rebuild image cache</property>
3529+ <property name="use_underline">True</property>
3530+ <property name="relief">GTK_RELIEF_NORMAL</property>
3531+ <property name="focus_on_click">True</property>
3532+ <signal name="clicked" handler="on_button_image_rebuild_clicked"/>
3533+ </widget>
3534+ <packing>
3535+ <property name="padding">0</property>
3536+ <property name="expand">True</property>
3537+ <property name="fill">True</property>
3538+ </packing>
3539+ </child>
3540+
3541+ <child>
3542+ <widget class="GtkButton" id="button_feed_rebuild">
3543+ <property name="border_width">5</property>
3544+ <property name="visible">True</property>
3545+ <property name="can_focus">True</property>
3546+ <property name="label" translatable="yes">Rebuild RSS-feed cache</property>
3547+ <property name="use_underline">True</property>
3548+ <property name="relief">GTK_RELIEF_NORMAL</property>
3549+ <property name="focus_on_click">False</property>
3550+ <signal name="clicked" handler="on_button_feed_rebuild_clicked"/>
3551+ </widget>
3552+ <packing>
3553+ <property name="padding">0</property>
3554+ <property name="expand">True</property>
3555+ <property name="fill">True</property>
3556+ </packing>
3557+ </child>
3558+ </widget>
3559+ </child>
3560+ </widget>
3561+ </child>
3562+
3563+ <child>
3564+ <widget class="GtkLabel" id="label4">
3565+ <property name="visible">True</property>
3566+ <property name="label" translatable="yes">&lt;b&gt;Media cache management&lt;/b&gt;</property>
3567+ <property name="use_underline">False</property>
3568+ <property name="use_markup">True</property>
3569+ <property name="justify">GTK_JUSTIFY_LEFT</property>
3570+ <property name="wrap">False</property>
3571+ <property name="selectable">False</property>
3572+ <property name="xalign">0.5</property>
3573+ <property name="yalign">0.5</property>
3574+ <property name="xpad">0</property>
3575+ <property name="ypad">0</property>
3576+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
3577+ <property name="width_chars">-1</property>
3578+ <property name="single_line_mode">False</property>
3579+ <property name="angle">0</property>
3580+ </widget>
3581+ <packing>
3582+ <property name="type">label_item</property>
3583+ </packing>
3584+ </child>
3585+ </widget>
3586+ <packing>
3587+ <property name="tab_expand">False</property>
3588+ <property name="tab_fill">True</property>
3589+ </packing>
3590+ </child>
3591+
3592+ <child>
3593+ <widget class="GtkLabel" id="label3">
3594+ <property name="visible">True</property>
3595+ <property name="label" translatable="yes">Reset</property>
3596+ <property name="use_underline">False</property>
3597+ <property name="use_markup">False</property>
3598+ <property name="justify">GTK_JUSTIFY_LEFT</property>
3599+ <property name="wrap">False</property>
3600+ <property name="selectable">False</property>
3601+ <property name="xalign">0.5</property>
3602+ <property name="yalign">0.5</property>
3603+ <property name="xpad">0</property>
3604+ <property name="ypad">0</property>
3605+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
3606+ <property name="width_chars">-1</property>
3607+ <property name="single_line_mode">False</property>
3608+ <property name="angle">0</property>
3609+ </widget>
3610+ <packing>
3611+ <property name="type">tab</property>
3612+ </packing>
3613+ </child>
3614+ </widget>
3615+ <packing>
3616+ <property name="padding">0</property>
3617+ <property name="expand">True</property>
3618+ <property name="fill">True</property>
3619+ </packing>
3620+ </child>
3621+ </widget>
3622+ </child>
3623+</widget>
3624+
3625+<widget class="GtkDialog" id="url_dialog">
3626+ <property name="border_width">5</property>
3627+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
3628+ <property name="title" translatable="yes"></property>
3629+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
3630+ <property name="window_position">GTK_WIN_POS_NONE</property>
3631+ <property name="modal">True</property>
3632+ <property name="resizable">False</property>
3633+ <property name="destroy_with_parent">True</property>
3634+ <property name="icon_name">gtk-edit</property>
3635+ <property name="decorated">True</property>
3636+ <property name="skip_taskbar_hint">True</property>
3637+ <property name="skip_pager_hint">False</property>
3638+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
3639+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
3640+ <property name="focus_on_map">True</property>
3641+ <property name="urgency_hint">False</property>
3642+ <property name="has_separator">False</property>
3643+ <signal name="delete_event" handler="on_url_dialog_delete_event"/>
3644+
3645+ <child internal-child="vbox">
3646+ <widget class="GtkVBox" id="dialog-vbox2">
3647+ <property name="visible">True</property>
3648+ <property name="homogeneous">False</property>
3649+ <property name="spacing">2</property>
3650+
3651+ <child internal-child="action_area">
3652+ <widget class="GtkHButtonBox" id="dialog-action_area2">
3653+ <property name="visible">True</property>
3654+ <property name="layout_style">GTK_BUTTONBOX_END</property>
3655+
3656+ <child>
3657+ <widget class="GtkButton" id="url_dialog_cancel_button">
3658+ <property name="visible">True</property>
3659+ <property name="can_focus">True</property>
3660+ <property name="label">gtk-cancel</property>
3661+ <property name="use_stock">True</property>
3662+ <property name="relief">GTK_RELIEF_NORMAL</property>
3663+ <property name="focus_on_click">True</property>
3664+ <property name="response_id">0</property>
3665+ <signal name="clicked" handler="on_url_dialog_cancel_button_clicked"/>
3666+ </widget>
3667+ </child>
3668+
3669+ <child>
3670+ <widget class="GtkButton" id="url_dialog_ok_button">
3671+ <property name="visible">True</property>
3672+ <property name="can_focus">True</property>
3673+ <property name="label">gtk-ok</property>
3674+ <property name="use_stock">True</property>
3675+ <property name="relief">GTK_RELIEF_NORMAL</property>
3676+ <property name="focus_on_click">True</property>
3677+ <property name="response_id">0</property>
3678+ <signal name="clicked" handler="on_url_dialog_ok_button_clicked"/>
3679+ </widget>
3680+ </child>
3681+ </widget>
3682+ <packing>
3683+ <property name="padding">0</property>
3684+ <property name="expand">False</property>
3685+ <property name="fill">True</property>
3686+ <property name="pack_type">GTK_PACK_END</property>
3687+ </packing>
3688+ </child>
3689+
3690+ <child>
3691+ <widget class="GtkHBox" id="hbox1">
3692+ <property name="visible">True</property>
3693+ <property name="homogeneous">False</property>
3694+ <property name="spacing">0</property>
3695+
3696+ <child>
3697+ <widget class="GtkLabel" id="label1">
3698+ <property name="visible">True</property>
3699+ <property name="label" translatable="yes">URL:</property>
3700+ <property name="use_underline">False</property>
3701+ <property name="use_markup">False</property>
3702+ <property name="justify">GTK_JUSTIFY_LEFT</property>
3703+ <property name="wrap">False</property>
3704+ <property name="selectable">False</property>
3705+ <property name="xalign">0.5</property>
3706+ <property name="yalign">0.5</property>
3707+ <property name="xpad">0</property>
3708+ <property name="ypad">0</property>
3709+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
3710+ <property name="width_chars">-1</property>
3711+ <property name="single_line_mode">False</property>
3712+ <property name="angle">0</property>
3713+ </widget>
3714+ <packing>
3715+ <property name="padding">5</property>
3716+ <property name="expand">False</property>
3717+ <property name="fill">True</property>
3718+ </packing>
3719+ </child>
3720+
3721+ <child>
3722+ <widget class="GtkEntry" id="url_entry">
3723+ <property name="visible">True</property>
3724+ <property name="can_default">True</property>
3725+ <property name="has_default">True</property>
3726+ <property name="can_focus">True</property>
3727+ <property name="has_focus">True</property>
3728+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
3729+ <property name="editable">True</property>
3730+ <property name="visibility">True</property>
3731+ <property name="max_length">0</property>
3732+ <property name="text" translatable="yes"></property>
3733+ <property name="has_frame">True</property>
3734+ <property name="invisible_char">●</property>
3735+ <property name="activates_default">False</property>
3736+ </widget>
3737+ <packing>
3738+ <property name="padding">0</property>
3739+ <property name="expand">True</property>
3740+ <property name="fill">True</property>
3741+ </packing>
3742+ </child>
3743+ </widget>
3744+ <packing>
3745+ <property name="padding">0</property>
3746+ <property name="expand">True</property>
3747+ <property name="fill">True</property>
3748+ </packing>
3749+ </child>
3750+ </widget>
3751+ </child>
3752+</widget>
3753+
3754+<widget class="GtkDialog" id="weather_search_dialog">
3755+ <property name="border_width">5</property>
3756+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
3757+ <property name="title" translatable="yes"></property>
3758+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
3759+ <property name="window_position">GTK_WIN_POS_NONE</property>
3760+ <property name="modal">False</property>
3761+ <property name="resizable">True</property>
3762+ <property name="destroy_with_parent">False</property>
3763+ <property name="decorated">True</property>
3764+ <property name="skip_taskbar_hint">False</property>
3765+ <property name="skip_pager_hint">False</property>
3766+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
3767+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
3768+ <property name="focus_on_map">True</property>
3769+ <property name="urgency_hint">False</property>
3770+ <property name="has_separator">False</property>
3771+
3772+ <child internal-child="vbox">
3773+ <widget class="GtkVBox" id="vbox20">
3774+ <property name="visible">True</property>
3775+ <property name="homogeneous">False</property>
3776+ <property name="spacing">2</property>
3777+
3778+ <child internal-child="action_area">
3779+ <widget class="GtkHButtonBox" id="hbuttonbox1">
3780+ <property name="visible">True</property>
3781+ <property name="layout_style">GTK_BUTTONBOX_END</property>
3782+
3783+ <child>
3784+ <widget class="GtkButton" id="location_button_cancel">
3785+ <property name="visible">True</property>
3786+ <property name="can_focus">True</property>
3787+ <property name="label">gtk-cancel</property>
3788+ <property name="use_stock">True</property>
3789+ <property name="relief">GTK_RELIEF_NORMAL</property>
3790+ <property name="focus_on_click">True</property>
3791+ <property name="response_id">0</property>
3792+ <signal name="clicked" handler="on_location_cancel_button_clicked"/>
3793+ </widget>
3794+ </child>
3795+
3796+ <child>
3797+ <widget class="GtkButton" id="location_add_button">
3798+ <property name="visible">True</property>
3799+ <property name="can_focus">True</property>
3800+ <property name="label">gtk-add</property>
3801+ <property name="use_stock">True</property>
3802+ <property name="relief">GTK_RELIEF_NORMAL</property>
3803+ <property name="focus_on_click">True</property>
3804+ <property name="response_id">0</property>
3805+ <signal name="clicked" handler="on_location_add_button_clicked"/>
3806+ </widget>
3807+ </child>
3808+ </widget>
3809+ <packing>
3810+ <property name="padding">0</property>
3811+ <property name="expand">False</property>
3812+ <property name="fill">True</property>
3813+ <property name="pack_type">GTK_PACK_END</property>
3814+ </packing>
3815+ </child>
3816+
3817+ <child>
3818+ <widget class="GtkVBox" id="vbox21">
3819+ <property name="visible">True</property>
3820+ <property name="homogeneous">False</property>
3821+ <property name="spacing">0</property>
3822+
3823+ <child>
3824+ <widget class="GtkFrame" id="frame6">
3825+ <property name="visible">True</property>
3826+ <property name="label_xalign">0</property>
3827+ <property name="label_yalign">0.5</property>
3828+ <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
3829+
3830+ <child>
3831+ <widget class="GtkAlignment" id="alignment16">
3832+ <property name="visible">True</property>
3833+ <property name="xalign">0.5</property>
3834+ <property name="yalign">0.5</property>
3835+ <property name="xscale">1</property>
3836+ <property name="yscale">1</property>
3837+ <property name="top_padding">5</property>
3838+ <property name="bottom_padding">0</property>
3839+ <property name="left_padding">12</property>
3840+ <property name="right_padding">0</property>
3841+
3842+ <child>
3843+ <widget class="GtkHBox" id="hbox18">
3844+ <property name="visible">True</property>
3845+ <property name="homogeneous">False</property>
3846+ <property name="spacing">0</property>
3847+
3848+ <child>
3849+ <widget class="GtkLabel" id="label19">
3850+ <property name="visible">True</property>
3851+ <property name="label" translatable="yes">City:</property>
3852+ <property name="use_underline">False</property>
3853+ <property name="use_markup">False</property>
3854+ <property name="justify">GTK_JUSTIFY_LEFT</property>
3855+ <property name="wrap">False</property>
3856+ <property name="selectable">False</property>
3857+ <property name="xalign">0.5</property>
3858+ <property name="yalign">0.5</property>
3859+ <property name="xpad">0</property>
3860+ <property name="ypad">0</property>
3861+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
3862+ <property name="width_chars">-1</property>
3863+ <property name="single_line_mode">False</property>
3864+ <property name="angle">0</property>
3865+ </widget>
3866+ <packing>
3867+ <property name="padding">0</property>
3868+ <property name="expand">False</property>
3869+ <property name="fill">True</property>
3870+ </packing>
3871+ </child>
3872+
3873+ <child>
3874+ <widget class="GtkEntry" id="location_entry">
3875+ <property name="visible">True</property>
3876+ <property name="can_default">True</property>
3877+ <property name="has_default">True</property>
3878+ <property name="can_focus">True</property>
3879+ <property name="has_focus">True</property>
3880+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
3881+ <property name="editable">True</property>
3882+ <property name="visibility">True</property>
3883+ <property name="max_length">0</property>
3884+ <property name="text" translatable="yes"></property>
3885+ <property name="has_frame">True</property>
3886+ <property name="invisible_char">●</property>
3887+ <property name="activates_default">False</property>
3888+ <signal name="activate" handler="on_location_entry_activate"/>
3889+ </widget>
3890+ <packing>
3891+ <property name="padding">5</property>
3892+ <property name="expand">True</property>
3893+ <property name="fill">True</property>
3894+ </packing>
3895+ </child>
3896+
3897+ <child>
3898+ <widget class="GtkButton" id="location_find_button">
3899+ <property name="visible">True</property>
3900+ <property name="can_focus">True</property>
3901+ <property name="label">gtk-find</property>
3902+ <property name="use_stock">True</property>
3903+ <property name="relief">GTK_RELIEF_NORMAL</property>
3904+ <property name="focus_on_click">True</property>
3905+ <signal name="clicked" handler="on_location_find_button_clicked"/>
3906+ </widget>
3907+ <packing>
3908+ <property name="padding">5</property>
3909+ <property name="expand">True</property>
3910+ <property name="fill">True</property>
3911+ </packing>
3912+ </child>
3913+ </widget>
3914+ </child>
3915+ </widget>
3916+ </child>
3917+
3918+ <child>
3919+ <widget class="GtkLabel" id="label20">
3920+ <property name="visible">True</property>
3921+ <property name="label" translatable="yes">&lt;b&gt;Search for location&lt;/b&gt;</property>
3922+ <property name="use_underline">False</property>
3923+ <property name="use_markup">True</property>
3924+ <property name="justify">GTK_JUSTIFY_LEFT</property>
3925+ <property name="wrap">False</property>
3926+ <property name="selectable">False</property>
3927+ <property name="xalign">0.5</property>
3928+ <property name="yalign">0.5</property>
3929+ <property name="xpad">0</property>
3930+ <property name="ypad">0</property>
3931+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
3932+ <property name="width_chars">-1</property>
3933+ <property name="single_line_mode">False</property>
3934+ <property name="angle">0</property>
3935+ </widget>
3936+ <packing>
3937+ <property name="type">label_item</property>
3938+ </packing>
3939+ </child>
3940+ </widget>
3941+ <packing>
3942+ <property name="padding">5</property>
3943+ <property name="expand">False</property>
3944+ <property name="fill">True</property>
3945+ </packing>
3946+ </child>
3947+
3948+ <child>
3949+ <widget class="GtkFrame" id="frame7">
3950+ <property name="visible">True</property>
3951+ <property name="label_xalign">0</property>
3952+ <property name="label_yalign">0.5</property>
3953+ <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
3954+
3955+ <child>
3956+ <widget class="GtkAlignment" id="alignment17">
3957+ <property name="visible">True</property>
3958+ <property name="xalign">0.5</property>
3959+ <property name="yalign">0.5</property>
3960+ <property name="xscale">1</property>
3961+ <property name="yscale">1</property>
3962+ <property name="top_padding">0</property>
3963+ <property name="bottom_padding">0</property>
3964+ <property name="left_padding">12</property>
3965+ <property name="right_padding">0</property>
3966+
3967+ <child>
3968+ <widget class="GtkScrolledWindow" id="scrolledwindow7">
3969+ <property name="border_width">5</property>
3970+ <property name="visible">True</property>
3971+ <property name="can_focus">True</property>
3972+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
3973+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
3974+ <property name="shadow_type">GTK_SHADOW_NONE</property>
3975+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
3976+
3977+ <child>
3978+ <widget class="GtkTreeView" id="location_results_treeview">
3979+ <property name="visible">True</property>
3980+ <property name="can_focus">True</property>
3981+ <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
3982+ <property name="headers_visible">True</property>
3983+ <property name="rules_hint">False</property>
3984+ <property name="reorderable">False</property>
3985+ <property name="enable_search">True</property>
3986+ <property name="fixed_height_mode">False</property>
3987+ <property name="hover_selection">False</property>
3988+ <property name="hover_expand">False</property>
3989+ </widget>
3990+ </child>
3991+ </widget>
3992+ </child>
3993+ </widget>
3994+ </child>
3995+
3996+ <child>
3997+ <widget class="GtkLabel" id="label21">
3998+ <property name="visible">True</property>
3999+ <property name="label" translatable="yes">&lt;b&gt;Search result&lt;/b&gt;</property>
4000+ <property name="use_underline">False</property>
4001+ <property name="use_markup">True</property>
4002+ <property name="justify">GTK_JUSTIFY_LEFT</property>
4003+ <property name="wrap">False</property>
4004+ <property name="selectable">False</property>
4005+ <property name="xalign">0.5</property>
4006+ <property name="yalign">0.5</property>
4007+ <property name="xpad">0</property>
4008+ <property name="ypad">0</property>
4009+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
4010+ <property name="width_chars">-1</property>
4011+ <property name="single_line_mode">False</property>
4012+ <property name="angle">0</property>
4013+ </widget>
4014+ <packing>
4015+ <property name="type">label_item</property>
4016+ </packing>
4017+ </child>
4018+ </widget>
4019+ <packing>
4020+ <property name="padding">5</property>
4021+ <property name="expand">True</property>
4022+ <property name="fill">True</property>
4023+ </packing>
4024+ </child>
4025+ </widget>
4026+ <packing>
4027+ <property name="padding">0</property>
4028+ <property name="expand">True</property>
4029+ <property name="fill">True</property>
4030+ </packing>
4031+ </child>
4032+ </widget>
4033+ </child>
4034+</widget>
4035+
4036 </glade-interface>
4037
4038=== modified file 'entertainerlib/tests/test_configuration.py'
4039--- entertainerlib/tests/test_configuration.py 2009-07-02 20:58:37 +0000
4040+++ entertainerlib/tests/test_configuration.py 2009-08-16 20:02:42 +0000
4041@@ -65,14 +65,6 @@
4042 self.configuration.update_configuration()
4043 self.assertEqual(self.configuration.get_weather_location(), new_value)
4044
4045- def test_write_preference_value(self):
4046- """Test writing a value to the preference configuration file"""
4047- new_value = True
4048- self.configuration.write_preference_value(
4049- "General", "display_icon", new_value)
4050- self.configuration.update_configuration()
4051- self.assertEqual(self.configuration.tray_icon_enabled(), new_value)
4052-
4053 def testGetThemeName(self):
4054 """Test getting the current theme name"""
4055 current_name = "Default"
4056@@ -85,9 +77,3 @@
4057 def testGetSlideshowStep(self):
4058 '''Test getting the slideshow step'''
4059 self.assertEqual(self.configuration.get_slideshow_step(), 5)
4060-
4061- def test_hidden_files_folders(self):
4062- """Test getting the `display_hidden_files_folders` setting."""
4063- self.assertEqual(self.configuration.display_hidden_files_folders(),
4064- False)
4065-
4066
4067=== modified file 'entertainerlib/tests/test_scrollarea.py'
4068--- entertainerlib/tests/test_scrollarea.py 2009-08-04 01:09:03 +0000
4069+++ entertainerlib/tests/test_scrollarea.py 2009-08-16 20:02:42 +0000
4070@@ -1,9 +1,6 @@
4071 # Copyright (c) 2009 Entertainer Developers - See COPYING - GPLv2
4072 """Tests ScrollArea"""
4073
4074-import clutter
4075-
4076-from entertainerlib.gui.widgets.base import Base
4077 from entertainerlib.gui.widgets.label import Label
4078 from entertainerlib.gui.widgets.scroll_area import ScrollArea
4079 from entertainerlib.tests import EntertainerTest
4080
4081=== modified file 'entertainerlib/tests/test_transitionfactory.py'
4082--- entertainerlib/tests/test_transitionfactory.py 2009-05-10 17:36:49 +0000
4083+++ entertainerlib/tests/test_transitionfactory.py 2009-08-16 20:02:42 +0000
4084@@ -59,14 +59,14 @@
4085 }
4086 # Test all possible transitions
4087 for key in values_to_test.keys():
4088- self.config.write_preference_value('General', 'transition_effect',
4089+ self.config.write_content_value('General', 'transition_effect',
4090 key)
4091 self.config.update_configuration()
4092 transition = self.factory.generate_transition()
4093 self.assertTrue(isinstance(transition, values_to_test[key]))
4094
4095 # Test the path when the user doesn't have effects
4096- self.config.write_preference_value('General', 'show_effects', 'False')
4097+ self.config.write_content_value('General', 'show_effects', 'False')
4098 self.config.update_configuration()
4099 transition = self.factory.generate_transition()
4100 self.assertTrue(isinstance(transition, NoEffect))

Subscribers

People subscribed via source and target branches