Merge lp:~tintou/pantheon-photos/saved-search-hardcoded into lp:~pantheon-photos/pantheon-photos/trunk
- saved-search-hardcoded
- Merge into trunk
Proposed by
Corentin Noël
Status: | Merged |
---|---|
Approved by: | Danielle Foré |
Approved revision: | 2526 |
Merged at revision: | 2533 |
Proposed branch: | lp:~tintou/pantheon-photos/saved-search-hardcoded |
Merge into: | lp:~pantheon-photos/pantheon-photos/trunk |
Diff against target: |
629 lines (+94/-323) 7 files modified
src/Dialogs.vala (+1/-1) src/Resources.vala (+2/-2) src/library/LibraryWindow.vala (+1/-1) src/searches/Branch.vala (+6/-6) src/searches/SavedSearchDialog.vala (+83/-114) src/sidebar/Tree.vala (+1/-1) ui/shotwell.glade (+0/-198) |
To merge this branch: | bzr merge lp:~tintou/pantheon-photos/saved-search-hardcoded |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Danielle Foré | Approve | ||
Victor Martinez (community) | Approve | ||
Review via email: mp+221114@code.launchpad.net |
Commit message
* Port SavedSearch dialog from xml to vala
* Change "Saved Search" to "Smart Album"
* Use Granite DatePicker
Description of the change
Ported SavedSearch Dialog to hardcoded.
To post a comment you must log in.
- 2524. By Corentin Noël
-
Fixed code style.
- 2525. By Corentin Noël
-
Renamed "Saved Search" to "Smart Album".
Revision history for this message
Danielle Foré (danrabbit) wrote : | # |
The context menu for the source list still says "New Saved Search..."
review:
Needs Fixing
- 2526. By Corentin Noël
-
Fixed Context Menu label.
Revision history for this message
Danielle Foré (danrabbit) wrote : | # |
Looks good to me :)
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'src/Dialogs.vala' |
2 | --- src/Dialogs.vala 2014-06-11 05:26:59 +0000 |
3 | +++ src/Dialogs.vala 2014-06-23 18:22:30 +0000 |
4 | @@ -22,7 +22,7 @@ |
5 | } |
6 | |
7 | public bool confirm_delete_saved_search(SavedSearch search) { |
8 | - string msg = _("This will remove the saved search \"%s\". Continue?") |
9 | + string msg = _("This will remove the smart album \"%s\". Continue?") |
10 | .printf(search.get_name()); |
11 | |
12 | return AppWindow.negate_affirm_question(msg, _("_Cancel"), _("_Delete"), |
13 | |
14 | === modified file 'src/Resources.vala' |
15 | --- src/Resources.vala 2014-06-22 15:06:34 +0000 |
16 | +++ src/Resources.vala 2014-06-23 18:22:30 +0000 |
17 | @@ -362,9 +362,9 @@ |
18 | return _("Unable to rename search to \"%s\" because the search already exists.").printf(name); |
19 | } |
20 | |
21 | - public const string DEFAULT_SAVED_SEARCH_NAME = _("Saved Search"); |
22 | + public const string DEFAULT_SAVED_SEARCH_NAME = _("Smart Album"); |
23 | |
24 | - public const string DELETE_SAVED_SEARCH_DIALOG_TITLE = _("Delete Search"); |
25 | + public const string DELETE_SAVED_SEARCH_DIALOG_TITLE = _("Delete Album"); |
26 | |
27 | public const string DELETE_SEARCH_MENU = _("_Delete"); |
28 | public const string EDIT_SEARCH_MENU = _("_Edit..."); |
29 | |
30 | === modified file 'src/library/LibraryWindow.vala' |
31 | --- src/library/LibraryWindow.vala 2014-06-22 06:40:38 +0000 |
32 | +++ src/library/LibraryWindow.vala 2014-06-23 18:22:30 +0000 |
33 | @@ -339,7 +339,7 @@ |
34 | |
35 | Gtk.ActionEntry new_search = { "CommonNewSearch", null, TRANSLATABLE, "<Ctrl>S", null, |
36 | on_new_search }; |
37 | - new_search.label = _("Ne_w Saved Search..."); |
38 | + new_search.label = _("New Smart Album…"); |
39 | actions += new_search; |
40 | |
41 | // top-level menus |
42 | |
43 | === modified file 'src/searches/Branch.vala' |
44 | --- src/searches/Branch.vala 2013-01-21 21:16:09 +0000 |
45 | +++ src/searches/Branch.vala 2014-06-23 18:22:30 +0000 |
46 | @@ -42,14 +42,14 @@ |
47 | } |
48 | |
49 | private void on_saved_search_added(SavedSearch search) { |
50 | - debug("search added"); |
51 | + debug("smart album added"); |
52 | Searches.SidebarEntry entry = new Searches.SidebarEntry(search); |
53 | entry_map.set(search, entry); |
54 | graft(get_root(), entry); |
55 | } |
56 | |
57 | private void on_saved_search_removed(SavedSearch search) { |
58 | - debug("search removed"); |
59 | + debug("smart album removed"); |
60 | Searches.SidebarEntry? entry = entry_map.get(search); |
61 | assert(entry != null); |
62 | |
63 | @@ -65,7 +65,7 @@ |
64 | private Gtk.Menu? context_menu = null; |
65 | |
66 | public Grouping() { |
67 | - base (_("Saved Searches"), new ThemedIcon(Gtk.Stock.FIND)); |
68 | + base (_("Smart Albums"), new ThemedIcon("playlist-automatic")); |
69 | setup_context_menu(); |
70 | } |
71 | |
72 | @@ -74,7 +74,7 @@ |
73 | Gtk.ActionEntry[] actions = new Gtk.ActionEntry[0]; |
74 | |
75 | Gtk.ActionEntry new_search = { "CommonNewSearch", null, TRANSLATABLE, null, null, on_new_search }; |
76 | - new_search.label = _("Ne_w Saved Search..."); |
77 | + new_search.label = _("New Smart Album…"); |
78 | actions += new_search; |
79 | |
80 | group.add_actions(actions, this); |
81 | @@ -113,7 +113,7 @@ |
82 | } |
83 | |
84 | internal static void init() { |
85 | - single_search_icon = new ThemedIcon(Gtk.Stock.FIND); |
86 | + single_search_icon = new ThemedIcon("playlist-automatic"); |
87 | } |
88 | |
89 | internal static void terminate() { |
90 | @@ -147,4 +147,4 @@ |
91 | if (Dialogs.confirm_delete_saved_search(search)) |
92 | AppWindow.get_command_manager().execute(new DeleteSavedSearchCommand(search)); |
93 | } |
94 | -} |
95 | +} |
96 | \ No newline at end of file |
97 | |
98 | === modified file 'src/searches/SavedSearchDialog.vala' |
99 | --- src/searches/SavedSearchDialog.vala 2013-08-27 21:53:39 +0000 |
100 | +++ src/searches/SavedSearchDialog.vala 2014-06-23 18:22:30 +0000 |
101 | @@ -48,12 +48,11 @@ |
102 | set_type_combo_box(SearchCondition.SearchType.ANY_TEXT); // Sets default. |
103 | type_combo.changed.connect(on_type_changed); |
104 | |
105 | - remove_button = new Gtk.Button(); |
106 | - remove_button.set_label(" – "); |
107 | + remove_button = new Gtk.Button.from_icon_name("list-remove-symbolic", Gtk.IconSize.BUTTON); |
108 | remove_button.button_press_event.connect(on_removed); |
109 | |
110 | align = new Gtk.Alignment(0,0,0,0); |
111 | - |
112 | + |
113 | box = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 8); |
114 | box.pack_start(type_combo, false, false, 0); |
115 | box.pack_start(align, false, false, 0); |
116 | @@ -481,10 +480,8 @@ |
117 | private const string DATE_FORMAT = "%x"; |
118 | private Gtk.Box box; |
119 | private Gtk.ComboBoxText context; |
120 | - private Gtk.Button label_one; |
121 | - private Gtk.Button label_two; |
122 | - private Gtk.Calendar cal_one; |
123 | - private Gtk.Calendar cal_two; |
124 | + private Granite.Widgets.DatePicker datepicker_one; |
125 | + private Granite.Widgets.DatePicker datepicker_two; |
126 | private Gtk.Label and; |
127 | |
128 | private SearchRowContainer parent; |
129 | @@ -502,82 +499,53 @@ |
130 | context.set_active(0); |
131 | context.changed.connect(on_changed); |
132 | |
133 | - cal_one = new Gtk.Calendar(); |
134 | - cal_two = new Gtk.Calendar(); |
135 | - |
136 | - label_one = new Gtk.Button(); |
137 | - label_one.clicked.connect(on_one_clicked); |
138 | - label_two = new Gtk.Button(); |
139 | - label_two.clicked.connect(on_two_clicked); |
140 | + datepicker_one = new Granite.Widgets.DatePicker(); |
141 | + datepicker_two = new Granite.Widgets.DatePicker(); |
142 | |
143 | and = new Gtk.Label(_("and")); |
144 | |
145 | box = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 8); |
146 | box.pack_start(context, false, false, 0); |
147 | - box.pack_start(label_one, false, false, 0); |
148 | + box.pack_start(datepicker_one, false, false, 0); |
149 | box.pack_start(and, false, false, 0); |
150 | - box.pack_start(label_two, false, false, 0); |
151 | + box.pack_start(datepicker_two, false, false, 0); |
152 | |
153 | box.show_all(); |
154 | - update_date_labels(); |
155 | + update_datepickers(); |
156 | } |
157 | |
158 | ~SearchRowRating() { |
159 | context.changed.disconnect(on_changed); |
160 | } |
161 | |
162 | - private void update_date_labels() { |
163 | - SearchConditionDate.Context c = (SearchConditionDate.Context) context.get_active(); |
164 | + private void update_datepickers() { |
165 | + SearchConditionDate.Context c = (SearchConditionDate.Context)context.get_active(); |
166 | |
167 | // Only show "and" and 2nd date label for between mode. |
168 | if (c == SearchConditionDate.Context.BETWEEN) { |
169 | - label_one.show(); |
170 | + datepicker_one.show(); |
171 | and.show(); |
172 | - label_two.show(); |
173 | + datepicker_two.show(); |
174 | } else if (c == SearchConditionDate.Context.IS_NOT_SET) { |
175 | - label_one.hide(); |
176 | + datepicker_one.hide(); |
177 | and.hide(); |
178 | - label_two.hide(); |
179 | + datepicker_two.hide(); |
180 | } else { |
181 | - label_one.show(); |
182 | + datepicker_one.show(); |
183 | and.hide(); |
184 | - label_two.hide(); |
185 | + datepicker_two.hide(); |
186 | } |
187 | - |
188 | - // Set label text to date. |
189 | - label_one.label = get_date_one().format(DATE_FORMAT); |
190 | - label_two.label = get_date_two().format(DATE_FORMAT);; |
191 | } |
192 | |
193 | public override Gtk.Widget get_widget() { |
194 | return box; |
195 | } |
196 | |
197 | - private DateTime get_date_one() { |
198 | - return new DateTime.local(cal_one.year, cal_one.month + 1, cal_one.day, 0, 0, 0.0); |
199 | - } |
200 | - |
201 | - private DateTime get_date_two() { |
202 | - return new DateTime.local(cal_two.year, cal_two.month + 1, cal_two.day, 0, 0, 0.0); |
203 | - } |
204 | - |
205 | - private void set_date_one(DateTime date) { |
206 | - cal_one.day = date.get_day_of_month(); |
207 | - cal_one.month = date.get_month() - 1; |
208 | - cal_one.year = date.get_year(); |
209 | - } |
210 | - |
211 | - private void set_date_two(DateTime date) { |
212 | - cal_two.day = date.get_day_of_month(); |
213 | - cal_two.month = date.get_month() - 1; |
214 | - cal_two.year = date.get_year(); |
215 | - } |
216 | - |
217 | public override SearchCondition get_search_condition() { |
218 | SearchCondition.SearchType search_type = parent.get_search_type(); |
219 | SearchConditionDate.Context search_context = (SearchConditionDate.Context) context.get_active(); |
220 | - SearchConditionDate c = new SearchConditionDate(search_type, search_context, get_date_one(), |
221 | - get_date_two()); |
222 | + SearchConditionDate c = new SearchConditionDate(search_type, search_context, datepicker_one.date, |
223 | + datepicker_two.date); |
224 | return c; |
225 | } |
226 | |
227 | @@ -585,9 +553,9 @@ |
228 | SearchConditionDate? cond = sc as SearchConditionDate; |
229 | assert(cond != null); |
230 | context.set_active(cond.context); |
231 | - set_date_one(cond.date_one); |
232 | - set_date_two(cond.date_two); |
233 | - update_date_labels(); |
234 | + datepicker_one.date = cond.date_one; |
235 | + datepicker_two.date = cond.date_two; |
236 | + update_datepickers(); |
237 | } |
238 | |
239 | public override bool is_complete() { |
240 | @@ -596,50 +564,14 @@ |
241 | |
242 | private void on_changed() { |
243 | parent.changed(parent); |
244 | - update_date_labels(); |
245 | - } |
246 | - |
247 | - private void popup_calendar(Gtk.Calendar cal) { |
248 | - int orig_day = cal.day; |
249 | - int orig_month = cal.month; |
250 | - int orig_year = cal.year; |
251 | - Gtk.Dialog d = new Gtk.Dialog.with_buttons(null, null, |
252 | - Gtk.DialogFlags.MODAL, Gtk.Stock.CANCEL, Gtk.ResponseType.REJECT, |
253 | - Gtk.Stock.OK, Gtk.ResponseType.ACCEPT); |
254 | - d.set_modal(true); |
255 | - d.set_resizable(false); |
256 | - d.set_decorated(false); |
257 | - ((Gtk.Box) d.get_content_area()).add(cal); |
258 | - ulong id_1 = cal.day_selected.connect(()=>{update_date_labels();}); |
259 | - ulong id_2 = cal.day_selected_double_click.connect(()=>{d.close();}); |
260 | - d.show_all(); |
261 | - int res = d.run(); |
262 | - if (res != Gtk.ResponseType.ACCEPT) { |
263 | - // User hit cancel, restore original date. |
264 | - cal.day = orig_day; |
265 | - cal.month = orig_month; |
266 | - cal.year = orig_year; |
267 | - } |
268 | - cal.disconnect(id_1); |
269 | - cal.disconnect(id_2); |
270 | - d.destroy(); |
271 | - update_date_labels(); |
272 | - } |
273 | - |
274 | - private void on_one_clicked() { |
275 | - popup_calendar(cal_one); |
276 | - } |
277 | - |
278 | - private void on_two_clicked() { |
279 | - popup_calendar(cal_two); |
280 | + update_datepickers(); |
281 | } |
282 | } |
283 | |
284 | - private Gtk.Builder builder; |
285 | private Gtk.Dialog dialog; |
286 | private Gtk.Button add_criteria; |
287 | private Gtk.ComboBoxText operator; |
288 | - private Gtk.Box row_box; |
289 | + private Gtk.Grid row_box; |
290 | private Gtk.Entry search_title; |
291 | private Gee.ArrayList<SearchRowContainer> row_list = new Gee.ArrayList<SearchRowContainer>(); |
292 | private bool edit_mode = false; |
293 | @@ -658,8 +590,8 @@ |
294 | row_list.get(0).allow_removal(false); |
295 | |
296 | // Add buttons for new search. |
297 | - dialog.add_action_widget(new Gtk.Button.from_stock(Gtk.Stock.CANCEL), Gtk.ResponseType.CANCEL); |
298 | - Gtk.Button ok_button = new Gtk.Button.from_stock(Gtk.Stock.OK); |
299 | + dialog.add_action_widget(new Gtk.Button.with_label(_("Cancel")), Gtk.ResponseType.CANCEL); |
300 | + Gtk.Button ok_button = new Gtk.Button.with_label(_("Add")); |
301 | ok_button.can_default = true; |
302 | dialog.add_action_widget(ok_button, Gtk.ResponseType.OK); |
303 | dialog.set_default_response(Gtk.ResponseType.OK); |
304 | @@ -674,7 +606,7 @@ |
305 | setup_dialog(); |
306 | |
307 | // Add close button. |
308 | - Gtk.Button close_button = new Gtk.Button.from_stock(Gtk.Stock.CLOSE); |
309 | + Gtk.Button close_button = new Gtk.Button.with_label(_("Save")); |
310 | close_button.can_default = true; |
311 | dialog.add_action_widget(close_button, Gtk.ResponseType.OK); |
312 | dialog.set_default_response(Gtk.ResponseType.OK); |
313 | @@ -697,32 +629,69 @@ |
314 | ~SavedSearchDialog() { |
315 | search_title.changed.disconnect(on_title_changed); |
316 | } |
317 | - |
318 | + |
319 | // Builds the dialog UI. Doesn't add buttons to the dialog or call dialog.show(). |
320 | private void setup_dialog() { |
321 | - builder = AppWindow.create_builder(); |
322 | - |
323 | - dialog = builder.get_object("Search criteria") as Gtk.Dialog; |
324 | - dialog.set_parent_window(AppWindow.get_instance().get_parent_window()); |
325 | - dialog.set_transient_for(AppWindow.get_instance()); |
326 | + dialog = new Gtk.Dialog(); |
327 | + dialog.title = _("Smart Album"); |
328 | + dialog.modal = true; |
329 | + dialog.transient_for= AppWindow.get_instance(); |
330 | dialog.response.connect(on_response); |
331 | - |
332 | - add_criteria = builder.get_object("Add search button") as Gtk.Button; |
333 | - add_criteria.button_press_event.connect(on_add_criteria); |
334 | - |
335 | - search_title = builder.get_object("Search title") as Gtk.Entry; |
336 | - search_title.set_activates_default(true); |
337 | + |
338 | + add_criteria = new Gtk.Button.from_icon_name("list-add-symbolic", Gtk.IconSize.BUTTON); |
339 | + add_criteria.button_press_event.connect (on_add_criteria); |
340 | + |
341 | + Gtk.Label search_label = new Gtk.Label("Name:"); |
342 | + |
343 | + search_title = new Gtk.Entry(); |
344 | + search_title.activates_default = true; |
345 | + search_title.hexpand = true; |
346 | search_title.changed.connect(on_title_changed); |
347 | - |
348 | - row_box = builder.get_object("row_box") as Gtk.Box; |
349 | - |
350 | - operator = builder.get_object("Type of search criteria") as Gtk.ComboBoxText; |
351 | + |
352 | + Gtk.Grid search_content_grid = new Gtk.Grid(); |
353 | + search_content_grid.orientation = Gtk.Orientation.HORIZONTAL; |
354 | + search_content_grid.column_spacing = 6; |
355 | + search_content_grid.add(search_label); |
356 | + search_content_grid.add(search_title); |
357 | + |
358 | + Gtk.Label match_label = new Gtk.Label.with_mnemonic(_("_Match")); |
359 | + Gtk.Label match2_label = new Gtk.Label.with_mnemonic(_("of the following:")); |
360 | + match2_label.hexpand = true; |
361 | + match2_label.xalign = 0; |
362 | + |
363 | + row_box = new Gtk.Grid(); |
364 | + row_box.orientation = Gtk.Orientation.VERTICAL; |
365 | + row_box.row_spacing = 12; |
366 | + |
367 | + operator = new Gtk.ComboBoxText(); |
368 | operator.append_text(_("any")); |
369 | operator.append_text(_("all")); |
370 | operator.append_text(_("none")); |
371 | - operator.set_active(0); |
372 | + operator.active = 0; |
373 | + |
374 | + Gtk.Grid match_grid = new Gtk.Grid(); |
375 | + match_grid.orientation = Gtk.Orientation.HORIZONTAL; |
376 | + match_grid.column_spacing = 6; |
377 | + match_grid.add(match_label); |
378 | + match_grid.add(operator); |
379 | + match_grid.add(match2_label); |
380 | + match_grid.add(add_criteria); |
381 | + |
382 | + Gtk.Grid search_grid = new Gtk.Grid(); |
383 | + search_grid.orientation = Gtk.Orientation.VERTICAL; |
384 | + search_grid.margin = 12; |
385 | + search_grid.row_spacing = 12; |
386 | + |
387 | + search_grid.add(search_content_grid); |
388 | + search_grid.add(new Gtk.Separator(Gtk.Orientation.HORIZONTAL)); |
389 | + search_grid.add(match_grid); |
390 | + search_grid.add(new Gtk.Separator(Gtk.Orientation.HORIZONTAL)); |
391 | + search_grid.add(row_box); |
392 | + |
393 | + Gtk.Box content = dialog.get_content_area() as Gtk.Box; |
394 | + content.add(search_grid); |
395 | } |
396 | - |
397 | + |
398 | // Displays the dialog. |
399 | public void show() { |
400 | dialog.run(); |
401 | @@ -826,4 +795,4 @@ |
402 | |
403 | dialog.set_response_sensitive(Gtk.ResponseType.OK, valid); |
404 | } |
405 | -} |
406 | +} |
407 | \ No newline at end of file |
408 | |
409 | === modified file 'src/sidebar/Tree.vala' |
410 | --- src/sidebar/Tree.vala 2014-06-08 20:11:20 +0000 |
411 | +++ src/sidebar/Tree.vala 2014-06-23 18:22:30 +0000 |
412 | @@ -196,7 +196,7 @@ |
413 | Gtk.ActionEntry[] actions = new Gtk.ActionEntry[0]; |
414 | |
415 | Gtk.ActionEntry new_search = { "CommonNewSearch", null, TRANSLATABLE, null, null, on_new_search }; |
416 | - new_search.label = _("Ne_w Saved Search..."); |
417 | + new_search.label = _("New Smart Album…"); |
418 | actions += new_search; |
419 | |
420 | Gtk.ActionEntry new_tag = { "CommonNewTag", null, TRANSLATABLE, null, null, on_new_tag }; |
421 | |
422 | === modified file 'ui/shotwell.glade' |
423 | --- ui/shotwell.glade 2014-05-20 03:38:19 +0000 |
424 | +++ ui/shotwell.glade 2014-06-23 18:22:30 +0000 |
425 | @@ -2,204 +2,6 @@ |
426 | <!-- Generated with glade 3.16.1 --> |
427 | <interface> |
428 | <requires lib="gtk+" version="3.0"/> |
429 | - <object class="GtkDialog" id="Search criteria"> |
430 | - <property name="can_focus">False</property> |
431 | - <property name="border_width">5</property> |
432 | - <property name="title" translatable="yes">Search</property> |
433 | - <property name="resizable">False</property> |
434 | - <property name="modal">True</property> |
435 | - <property name="destroy_with_parent">True</property> |
436 | - <property name="type_hint">dialog</property> |
437 | - <property name="skip_taskbar_hint">True</property> |
438 | - <child internal-child="vbox"> |
439 | - <object class="GtkBox" id="dialog-vbox6"> |
440 | - <property name="visible">True</property> |
441 | - <property name="can_focus">False</property> |
442 | - <property name="orientation">vertical</property> |
443 | - <property name="spacing">2</property> |
444 | - <child internal-child="action_area"> |
445 | - <object class="GtkButtonBox" id="search dialog buttons"> |
446 | - <property name="visible">True</property> |
447 | - <property name="can_focus">False</property> |
448 | - <property name="layout_style">end</property> |
449 | - <child> |
450 | - <placeholder/> |
451 | - </child> |
452 | - </object> |
453 | - <packing> |
454 | - <property name="expand">False</property> |
455 | - <property name="fill">True</property> |
456 | - <property name="pack_type">end</property> |
457 | - <property name="position">0</property> |
458 | - </packing> |
459 | - </child> |
460 | - <child> |
461 | - <object class="GtkAlignment" id="title_aln"> |
462 | - <property name="visible">True</property> |
463 | - <property name="can_focus">False</property> |
464 | - <child> |
465 | - <object class="GtkBox" id="hbox3"> |
466 | - <property name="visible">True</property> |
467 | - <property name="can_focus">False</property> |
468 | - <child> |
469 | - <object class="GtkLabel" id="Name of search:"> |
470 | - <property name="visible">True</property> |
471 | - <property name="can_focus">False</property> |
472 | - <property name="label" translatable="yes">_Name of search:</property> |
473 | - <property name="use_underline">True</property> |
474 | - <property name="mnemonic_widget">Search title</property> |
475 | - </object> |
476 | - <packing> |
477 | - <property name="expand">False</property> |
478 | - <property name="fill">True</property> |
479 | - <property name="padding">8</property> |
480 | - <property name="position">0</property> |
481 | - </packing> |
482 | - </child> |
483 | - <child> |
484 | - <object class="GtkEntry" id="Search title"> |
485 | - <property name="visible">True</property> |
486 | - <property name="can_focus">True</property> |
487 | - <property name="invisible_char">•</property> |
488 | - <property name="width_chars">20</property> |
489 | - <property name="primary_icon_activatable">False</property> |
490 | - <property name="secondary_icon_activatable">False</property> |
491 | - </object> |
492 | - <packing> |
493 | - <property name="expand">True</property> |
494 | - <property name="fill">True</property> |
495 | - <property name="padding">8</property> |
496 | - <property name="position">1</property> |
497 | - </packing> |
498 | - </child> |
499 | - </object> |
500 | - </child> |
501 | - </object> |
502 | - <packing> |
503 | - <property name="expand">True</property> |
504 | - <property name="fill">True</property> |
505 | - <property name="position">1</property> |
506 | - </packing> |
507 | - </child> |
508 | - <child> |
509 | - <object class="GtkHSeparator" id="hseparator1"> |
510 | - <property name="visible">True</property> |
511 | - <property name="can_focus">False</property> |
512 | - </object> |
513 | - <packing> |
514 | - <property name="expand">False</property> |
515 | - <property name="fill">True</property> |
516 | - <property name="padding">8</property> |
517 | - <property name="position">2</property> |
518 | - </packing> |
519 | - </child> |
520 | - <child> |
521 | - <object class="GtkAlignment" id="alignment9"> |
522 | - <property name="visible">True</property> |
523 | - <property name="can_focus">False</property> |
524 | - <child> |
525 | - <object class="GtkBox" id="hbox2"> |
526 | - <property name="visible">True</property> |
527 | - <property name="can_focus">False</property> |
528 | - <property name="spacing">10</property> |
529 | - <child> |
530 | - <object class="GtkLabel" id="Match"> |
531 | - <property name="visible">True</property> |
532 | - <property name="can_focus">False</property> |
533 | - <property name="label" translatable="yes">_Match</property> |
534 | - <property name="use_underline">True</property> |
535 | - <property name="justify">right</property> |
536 | - <property name="mnemonic_widget">Type of search criteria</property> |
537 | - </object> |
538 | - <packing> |
539 | - <property name="expand">False</property> |
540 | - <property name="fill">True</property> |
541 | - <property name="padding">8</property> |
542 | - <property name="position">0</property> |
543 | - </packing> |
544 | - </child> |
545 | - <child> |
546 | - <object class="GtkComboBoxText" id="Type of search criteria"> |
547 | - <property name="visible">True</property> |
548 | - <property name="can_focus">False</property> |
549 | - </object> |
550 | - <packing> |
551 | - <property name="expand">False</property> |
552 | - <property name="fill">False</property> |
553 | - <property name="padding">1</property> |
554 | - <property name="position">1</property> |
555 | - </packing> |
556 | - </child> |
557 | - <child> |
558 | - <object class="GtkLabel" id="of the following:"> |
559 | - <property name="visible">True</property> |
560 | - <property name="can_focus">False</property> |
561 | - <property name="ypad">3</property> |
562 | - <property name="label" translatable="yes">of the following:</property> |
563 | - </object> |
564 | - <packing> |
565 | - <property name="expand">False</property> |
566 | - <property name="fill">True</property> |
567 | - <property name="padding">8</property> |
568 | - <property name="position">2</property> |
569 | - </packing> |
570 | - </child> |
571 | - <child> |
572 | - <placeholder/> |
573 | - </child> |
574 | - <child> |
575 | - <object class="GtkButton" id="Add search button"> |
576 | - <property name="label"> + </property> |
577 | - <property name="visible">True</property> |
578 | - <property name="can_focus">True</property> |
579 | - <property name="receives_default">True</property> |
580 | - </object> |
581 | - <packing> |
582 | - <property name="expand">False</property> |
583 | - <property name="fill">False</property> |
584 | - <property name="pack_type">end</property> |
585 | - <property name="position">4</property> |
586 | - </packing> |
587 | - </child> |
588 | - </object> |
589 | - </child> |
590 | - </object> |
591 | - <packing> |
592 | - <property name="expand">True</property> |
593 | - <property name="fill">True</property> |
594 | - <property name="position">3</property> |
595 | - </packing> |
596 | - </child> |
597 | - <child> |
598 | - <object class="GtkHSeparator" id="hseparator2"> |
599 | - <property name="visible">True</property> |
600 | - <property name="can_focus">False</property> |
601 | - </object> |
602 | - <packing> |
603 | - <property name="expand">False</property> |
604 | - <property name="fill">True</property> |
605 | - <property name="padding">8</property> |
606 | - <property name="position">4</property> |
607 | - </packing> |
608 | - </child> |
609 | - <child> |
610 | - <object class="GtkBox" id="row_box"> |
611 | - <property name="visible">True</property> |
612 | - <property name="can_focus">False</property> |
613 | - <property name="orientation">vertical</property> |
614 | - <child> |
615 | - <placeholder/> |
616 | - </child> |
617 | - </object> |
618 | - <packing> |
619 | - <property name="expand">True</property> |
620 | - <property name="fill">True</property> |
621 | - <property name="position">5</property> |
622 | - </packing> |
623 | - </child> |
624 | - </object> |
625 | - </child> |
626 | - </object> |
627 | <object class="GtkAdjustment" id="bg_color_adjustment"> |
628 | <property name="upper">65535</property> |
629 | <property name="step_increment">1000</property> |
Looks good to me. 'Saved Search' sounds a bit strange to me. It makes sense for developers because that's what it does, but 'Media Filter' would probably make more sense for the end user.