Merge lp:~victored/pantheon-files/no-menubar into lp:~elementary-apps/pantheon-files/trunk

Proposed by Victor Martinez
Status: Merged
Approved by: Danielle Foré
Approved revision: 1165
Merged at revision: 1191
Proposed branch: lp:~victored/pantheon-files/no-menubar
Merge into: lp:~elementary-apps/pantheon-files/trunk
Diff against target: 1667 lines (+101/-921)
11 files modified
libwidgets/Animations.vala (+2/-2)
libwidgets/CMakeLists.txt (+1/-0)
schemas/org.pantheon.files.gschema.xml (+0/-32)
src/CMakeLists.txt (+0/-2)
src/View/Chrome/TopMenu.vala (+4/-2)
src/View/ContextView.vala (+0/-481)
src/View/OverlayBar.vala (+13/-13)
src/View/PropertiesWindow.vala (+20/-10)
src/View/ViewContainer.vala (+12/-41)
src/View/Window.vala (+35/-252)
src/pantheon-files-ui.xml (+14/-86)
To merge this branch: bzr merge lp:~victored/pantheon-files/no-menubar
Reviewer Review Type Date Requested Status
Danielle Foré Approve
Review via email: mp+163418@code.launchpad.net

Commit message

- Remove dead code related to the context view
- Don't allow a menubar to be displayed inside the window. Menu support has been kept so that a global menu can still be used.

Description of the change

This branch doesn't allow any menubar to be displayed inside Files' window.

* Also drops dead code related to the already-removed context view/sidebar.

To post a comment you must log in.
1164. By Victor Martinez

drop unnecessary built-in theming

1165. By Victor Martinez

Merge trunk

Revision history for this message
Danielle Foré (danrabbit) wrote :

Right clicking the toolbar seems to show an empty menu. Otherwise this works.

We should probably retain the toolbar menu item for hide/show source list until we figure out a better way to do this.

review: Needs Fixing
Revision history for this message
Victor Martinez (victored) wrote :

Thanks for the review Daniel,

I cannot reproduce that issue here.

Did you install the updated pantheon-files-ui.xml file? (i.e. run sudo make install)

Revision history for this message
Danielle Foré (danrabbit) wrote :

Ah Victor, you're correct. If I actually install it it works perfectly.

Today is a good day to piss off some more people. Approve ;)

review: Approve
Revision history for this message
Victor Martinez (victored) wrote :

haha let me go get my shield

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== renamed file 'src/View/Animations.vala' => 'libwidgets/Animations.vala'
--- src/View/Animations.vala 2011-12-23 02:45:45 +0000
+++ libwidgets/Animations.vala 2013-05-13 19:45:28 +0000
@@ -1,6 +1,6 @@
1namespace Marlin.Animation {1namespace Marlin.Animation {
2 2
3 static void smooth_adjustment_to (Gtk.Adjustment adj, int final) 3 public static void smooth_adjustment_to (Gtk.Adjustment adj, int final)
4 {4 {
5 var initial = adj.value;5 var initial = adj.value;
6 var to_do = final - initial;6 var to_do = final - initial;
77
=== modified file 'libwidgets/CMakeLists.txt'
--- libwidgets/CMakeLists.txt 2013-04-22 07:45:04 +0000
+++ libwidgets/CMakeLists.txt 2013-05-13 19:45:28 +0000
@@ -35,6 +35,7 @@
35link_directories(${LIB_PATHS})35link_directories(${LIB_PATHS})
3636
37vala_precompile(VALA_C ${PKGNAME}37vala_precompile(VALA_C ${PKGNAME}
38 Animations.vala
38 LocationBar.vala39 LocationBar.vala
39 BreadcrumbsElements.vala40 BreadcrumbsElements.vala
40 BreadcrumbsEntry.vala41 BreadcrumbsEntry.vala
4142
=== modified file 'schemas/org.pantheon.files.gschema.xml'
--- schemas/org.pantheon.files.gschema.xml 2013-05-12 21:15:15 +0000
+++ schemas/org.pantheon.files.gschema.xml 2013-05-13 19:45:28 +0000
@@ -14,11 +14,6 @@
14 <value value="5" nick="larger"/>14 <value value="5" nick="larger"/>
15 <value value="6" nick="largest"/>15 <value value="6" nick="largest"/>
16 </enum>16 </enum>
17 <enum id="contextviewmode">
18 <value value="0" nick="horizontal"/>
19 <value value="1" nick="vertical"/>
20 <value value="2" nick="auto"/>
21 </enum>
22 <enum id="dateformatmode">17 <enum id="dateformatmode">
23 <value value="0" nick="iso"/>18 <value value="0" nick="iso"/>
24 <value value="1" nick="locale"/>19 <value value="1" nick="locale"/>
@@ -26,16 +21,6 @@
26 </enum>21 </enum>
2722
28 <schema path="/org/pantheon/files/preferences/" id="org.pantheon.files.preferences">23 <schema path="/org/pantheon/files/preferences/" id="org.pantheon.files.preferences">
29 <key type="b" name="auto-theme">
30 <default>false</default>
31 <summary>Auto-theme</summary>
32 <description>Automaticly theme Marlin's specific widgets</description>
33 </key>
34 <key type="b" name="show-menubar">
35 <default>false</default>
36 <summary>Show the menubar</summary>
37 <description>Show the menubar</description>
38 </key>
39 <key type="b" name="show-sidebar">24 <key type="b" name="show-sidebar">
40 <default>true</default>25 <default>true</default>
41 <summary>Show the sidebar</summary>26 <summary>Show the sidebar</summary>
@@ -46,11 +31,6 @@
46 <summary>Show hidden files</summary>31 <summary>Show hidden files</summary>
47 <description>If set to true, hidden files will also be shown (files starting with a "." for example)</description>32 <description>If set to true, hidden files will also be shown (files starting with a "." for example)</description>
48 </key>33 </key>
49 <key type="b" name="start-with-contextview">
50 <default>false</default>
51 <summary>Show the context view pane</summary>
52 <description>Show the context view pane</description>
53 </key>
54 <key type="b" name="rgba-colormap">34 <key type="b" name="rgba-colormap">
55 <default>false</default>35 <default>false</default>
56 <summary>enable rgba window</summary>36 <summary>enable rgba window</summary>
@@ -92,13 +72,6 @@
92 <summary>interpret desktop files</summary>72 <summary>interpret desktop files</summary>
93 <description>If true the desktop files would be interpreted, a desktop file can represent an executable, a directory etc. (their filename, type and some other properties would be the target ones)</description>73 <description>If true the desktop files would be interpreted, a desktop file can represent an executable, a directory etc. (their filename, type and some other properties would be the target ones)</description>
94 </key>74 </key>
95 <key name="contextview-orientation" enum="contextviewmode">
96 <default>'auto'</default>
97 <summary>Context View Panel orientation</summary>
98 <description>
99 Auto Context View Panel orientation means the panel would be horizontal or vertical depending on the size of your window.
100 </description>
101 </key>
102 <key name="default-viewmode" enum="viewmode">75 <key name="default-viewmode" enum="viewmode">
103 <default>'icon'</default>76 <default>'icon'</default>
104 <summary>Default viewmode when browsing</summary>77 <summary>Default viewmode when browsing</summary>
@@ -106,11 +79,6 @@
106 The default viewmode to be used when opening a new tab or window79 The default viewmode to be used when opening a new tab or window
107 </description>80 </description>
108 </key>81 </key>
109 <key type="b" name="toolbar-primary-css-style">
110 <default>true</default>
111 <summary>toolbar css style</summary>
112 <description>Set the toolbar css style to primary-toolbar.</description>
113 </key>
114 <key type="as" name="toolbar-items">82 <key type="as" name="toolbar-items">
115 <default>[ 'Back', 'Forward', 'ViewSwitcher', 'LocationEntry']</default>83 <default>[ 'Back', 'Forward', 'ViewSwitcher', 'LocationEntry']</default>
116 <summary>List of actions present in the toolbar</summary>84 <summary>List of actions present in the toolbar</summary>
11785
=== modified file 'src/CMakeLists.txt'
--- src/CMakeLists.txt 2013-05-13 09:26:42 +0000
+++ src/CMakeLists.txt 2013-05-13 19:45:28 +0000
@@ -48,12 +48,10 @@
48 View/Resources.vala48 View/Resources.vala
49 View/DbusTags.vala49 View/DbusTags.vala
50 View/ViewContainer.vala50 View/ViewContainer.vala
51 View/ContextView.vala
52 View/OverlayBar.vala51 View/OverlayBar.vala
53 View/PropertiesWindow.vala52 View/PropertiesWindow.vala
54 View/Browser.vala53 View/Browser.vala
55 View/ViewMode.vala54 View/ViewMode.vala
56 View/Animations.vala
57 View/LocationBar.vala55 View/LocationBar.vala
58 View/Chrome/TopMenu.vala56 View/Chrome/TopMenu.vala
59 View/Chrome/ViewSwicher.vala57 View/Chrome/ViewSwicher.vala
6058
=== modified file 'src/View/Chrome/TopMenu.vala'
--- src/View/Chrome/TopMenu.vala 2013-02-22 15:03:12 +0000
+++ src/View/Chrome/TopMenu.vala 2013-05-13 19:45:28 +0000
@@ -35,8 +35,8 @@
35 public TopMenu (Window window)35 public TopMenu (Window window)
36 {36 {
37 win = window;37 win = window;
38 if (Preferences.settings.get_boolean("toolbar-primary-css-style"))38
39 get_style_context().add_class (Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);39 get_style_context ().add_class (Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);
4040
41 compact_menu = (Gtk.Menu) win.ui.get_widget("/CompactMenu");41 compact_menu = (Gtk.Menu) win.ui.get_widget("/CompactMenu");
42 toolbar_menu = (Gtk.Menu) win.ui.get_widget("/ToolbarMenu");42 toolbar_menu = (Gtk.Menu) win.ui.get_widget("/ToolbarMenu");
@@ -44,6 +44,8 @@
44 app_menu = new Granite.Widgets.AppMenu (compact_menu);44 app_menu = new Granite.Widgets.AppMenu (compact_menu);
45 setup_items();45 setup_items();
46 show();46 show();
47
48 app_menu.show_all ();
47 }49 }
4850
49 public override bool popup_context_menu (int x, int y, int button) {51 public override bool popup_context_menu (int x, int y, int button) {
5052
=== removed file 'src/View/ContextView.vala'
--- src/View/ContextView.vala 2013-01-19 23:24:06 +0000
+++ src/View/ContextView.vala 1970-01-01 00:00:00 +0000
@@ -1,481 +0,0 @@
1//
2// ContextView.vala
3//
4// Authors:
5// Mathijs Henquet <mathijs.henquet@gmail.com>
6// ammonkey <am.monkeyd@gmail.com>
7//
8// Copyright (c) 2011 Mathijs Henquet
9//
10// This program is free software: you can redistribute it and/or modify
11// it under the terms of the GNU General Public License as published by
12// the Free Software Foundation, either version 3 of the License, or
13// (at your option) any later version.
14//
15// This program is distributed in the hope that it will be useful,
16// but WITHOUT ANY WARRANTY; without even the implied warranty of
17// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18// GNU General Public License for more details.
19//
20// You should have received a copy of the GNU General Public License
21// along with this program. If not, see <http://www.gnu.org/licenses/>.
22
23using Gtk;
24using Gdk;
25using Cairo;
26using Gee;
27using Granite.Widgets;
28
29namespace Marlin.View {
30
31 public class ContextView : Gtk.EventBox
32 {
33 public const int height = 48;
34 public const int width = 190;
35 public const int key_value_padding = 8;
36 public const int key_value_width = 90;
37 public Gtk.Menu toolbar_menu;
38
39 public int panel_size{
40 get{
41 switch (orientation){
42 case Gtk.Orientation.HORIZONTAL:
43 return height;
44 case Gtk.Orientation.VERTICAL:
45 default:
46 return width;
47 }
48 }
49 }
50
51 private Window window;
52 private Gdk.Pixbuf? pixbuf {
53 set{
54 if (value != null)
55 evbox.set_from_pixbuf (value);
56 }
57 }
58
59 private ImgEventBox evbox;
60 private Label label;
61 private Gee.List<Pair<string, string>> info;
62 private uint timeout = 0;
63 private uint timeout_update = 0;
64 private bool first_alloc = true;
65 private Allocation cv_alloc; /* last allocation of the contextview */
66 private bool should_sync;
67
68 private GOF.File? last_gof = null;
69 private ulong icon_changed_callback = 0;
70 private unowned GLib.List<GOF.File>? last_selection = null;
71
72 private Orientation _orientation = Gtk.Orientation.HORIZONTAL;
73 public Orientation orientation {
74 set{
75 if(timeout != 0){
76 Source.remove(timeout);
77 timeout = 0;
78 }
79 first_alloc = true;
80
81 _orientation = value;
82 change_css_class ();
83 /* reset pane position to original values */
84 window.main_box.set_position (window.main_box.max_position - panel_size);
85 //SPOTTED!
86 update(last_selection);
87 }
88 get{
89 return _orientation;
90 }
91 }
92
93 public Orientation parent_orientation {
94 set{
95 orientation = convert_parent_orientation(value);
96 }
97 }
98
99 private Orientation convert_parent_orientation (Orientation o) {
100 switch (o){
101 case Gtk.Orientation.HORIZONTAL:
102 return Gtk.Orientation.VERTICAL;
103 case Gtk.Orientation.VERTICAL:
104 default:
105 return Gtk.Orientation.HORIZONTAL;
106 }
107 }
108
109 /* TODO remove should_sync? */
110 public ContextView (Window window, bool _should_sync,
111 Gtk.Orientation parent_orientation = Gtk.Orientation.VERTICAL)
112 {
113 this.window = window;
114 _orientation = convert_parent_orientation(parent_orientation);
115
116 should_sync = _should_sync;
117 if (should_sync) {
118 window.selection_changed.connect (update);
119 window.item_hovered.connect (update_hovered);
120 change_css_class ();
121 }
122
123 label = new Label("");
124 var font_style = new Pango.FontDescription();
125 font_style.set_size(14 * 1000);
126 label.override_font(font_style);
127 //label.ellipsize = Pango.EllipsizeMode.MIDDLE;
128 label.set_line_wrap (true);
129 label.set_line_wrap_mode (Pango.WrapMode.CHAR);
130 label.set_width_chars (10);
131 label.set_padding(key_value_padding, -1);
132
133 evbox = new ImgEventBox(Orientation.HORIZONTAL);
134
135 info = new LinkedList<Pair<string, string>>();
136
137 toolbar_menu = (Gtk.Menu) window.ui.get_widget("/ToolbarMenu");
138 button_press_event.connect(right_click);
139 size_allocate.connect(size_allocate_changed);
140 }
141
142 private void change_css_class () {
143 var ctx = window.main_box.get_style_context();
144
145 if (orientation == Orientation.VERTICAL) {
146 ctx.remove_class("contextview-horizontal");
147 ctx.add_class("contextview-vertical");
148 } else {
149 ctx.remove_class("contextview-vertical");
150 ctx.add_class("contextview-horizontal");
151 }
152
153 window.main_box.reset_style ();
154 }
155
156#if VALA_0_14
157 private void size_allocate_changed (Gtk.Allocation s)
158#else
159 private void size_allocate_changed (Widget w, Gdk.Rectangle s)
160#endif
161 {
162 /* first allocations can be tricky ignore all allocations different
163 than the panel requested size at first */
164 if (first_alloc) {
165 if (orientation == Orientation.VERTICAL &&
166 s.width > 1 && s.width <= panel_size)
167 first_alloc = false;
168 if (orientation == Orientation.HORIZONTAL &&
169 s.height > 1 && s.height <= panel_size)
170 first_alloc = false;
171 }
172 /*if (first_alloc && !should_sync)
173 return;*/
174
175 //amtest
176 /*stdout.printf ("::::: %d %d :: %d %d\n", cv_alloc.width, cv_alloc.height,
177 s.width, s.height);*/
178 if ((orientation == Orientation.VERTICAL && cv_alloc.width != s.width) ||
179 (orientation == Orientation.HORIZONTAL && cv_alloc.height != s.height)) {
180 //stdout.printf ("$$$$$$$$$$$ img alloc %d\n", s.width);
181 /* TODO don't create/destroy the contextview in miller */
182 //message ("zz");
183 if(timeout != 0){
184 Source.remove(timeout);
185 timeout = 0;
186 }
187 timeout = Timeout.add(300, () => {
188 //message ("wwwwwwwwwwwww");
189 update_icon();
190 timeout = 0;
191
192 return false;
193 });
194 }
195
196 }
197
198 public bool right_click(Gdk.EventButton event)
199 {
200 if(event.button == 3)
201 {
202 Eel.pop_up_context_menu(toolbar_menu, 0, 0, event);
203 return true;
204 }
205 return false;
206 }
207
208 private void update_icon()
209 {
210 Allocation alloc;
211 int icon_size_req;
212
213 if (last_gof == null)
214 return;
215
216 //window.get_size(out w_width, out w_height);
217 get_allocation(out alloc);
218 cv_alloc = alloc;
219 //stdout.printf ("$$$$$$$$$ real alloc %d %d\n", alloc.width, alloc.height);
220
221 /* fixing a minimum and maximum value */
222 if (orientation == Orientation.VERTICAL) {
223 /* add a little 16px padding for normal icons */
224 if (last_gof.info.has_attribute (FileAttribute.THUMBNAIL_PATH) &&
225 last_gof.info.get_attribute_byte_string (FileAttribute.THUMBNAIL_PATH) != null) {
226 icon_size_req = alloc.width.clamp (height, 256);
227 } else {
228 icon_size_req = alloc.width.clamp (height, width-16);
229 }
230 } else {
231 icon_size_req = alloc.height.clamp (height, 256);
232 }
233
234 /*if (last_gof.thumbnail_path != null) {
235 //pixbuf = yield Pixbuf from_stream_at_scale_async ();
236 pixbuf = new Pixbuf.from_file (last_gof.thumbnail_path);
237 }*/
238
239 //pixbuf = last_gof.get_icon_pixbuf (icon_size_req, false, GOF.FileIconFlags.USE_THUMBNAILS);
240 string preview = last_gof.get_preview_path();
241 bool use_previewed = false;
242 if(preview != null)
243 {
244 try
245 {
246 pixbuf = new Gdk.Pixbuf.from_file_at_size (preview, icon_size_req, -1); // FIXME need cache
247 use_previewed = true;
248 }
249 catch(Error e)
250 {
251 }
252 }
253 else if(last_gof.get_thumbnail_path() != null && last_gof.flags == GOF.File.ThumbState.READY)
254 {
255 Marlin.Thumbnailer.get().queue_file(last_gof, null, true);
256 }
257 if(!use_previewed)
258 {
259 var micon = last_gof.get_icon (128, GOF.FileIconFlags.USE_THUMBNAILS);
260 pixbuf = micon.get_pixbuf_at_size (icon_size_req);
261 }
262
263
264 /* TODO ask tumbler a LARGE thumb for size > 128 */
265 /*if (should_sync && (icon_size_req > w_width/2 || icon_size_req > w_height/2))
266 window.main_box.set_position (window.main_box.max_position - icon_size_req);*/
267 }
268
269 public void update (GLib.List<GOF.File>? selection = null) {
270 if (icon_changed_callback > 0) {
271 Source.remove((uint) icon_changed_callback);
272 icon_changed_callback = 0;
273 }
274
275 if (selection != null && selection.data != null && selection.data is GOF.File) {
276 last_gof = selection.data as GOF.File;
277 last_selection = selection;
278 } else {
279 last_gof = null;
280 /* if empty selection then pass the currentslot folder */
281 if (window.current_tab != null) {
282 var aslot = window.current_tab.get_active_slot ();
283 if (aslot != null)
284 last_gof = aslot.directory.file;
285 }
286 last_selection = null;
287 }
288 if (last_gof == null)
289 return;
290 if (last_gof.info == null)
291 return;
292
293 timed_update ();
294 }
295
296 public void update_hovered (GOF.File? file) {
297 if (file != null) {
298 last_gof = file;
299 timed_update ();
300 } else {
301 update (last_selection);
302 }
303 }
304
305 private void timed_update () {
306 if(timeout_update != 0){
307 Source.remove(timeout_update);
308 timeout_update = 0;
309 }
310 timeout_update = Timeout.add(60, () => {
311 real_update ();
312 timeout_update = 0;
313
314 return false;
315 });
316 }
317
318 private void real_update () {
319 //warning ("ctx pane update");
320 return_if_fail (last_gof != null && last_gof.info != null);
321
322 /* don't update icon if we are in column view as the preview pane is
323 built/destroyed foreach selection changed */
324 if (should_sync)
325 update_icon();
326 icon_changed_callback = last_gof.icon_changed.connect (() => {
327 if (should_sync)
328 update_icon ();
329 });
330
331 info.clear();
332 var raw_type = last_gof.info.get_file_type();
333
334 /* TODO hide infos for ListView mode: we don't want the COLUMNS infos to show if
335 we are in listview: size, type, modified */
336 info.add(new Pair<string, string>(_("Name") + (": "), last_gof.info.get_name ()));
337 info.add(new Pair<string, string>(_("Type") + (": "), last_gof.formated_type));
338
339 if (last_gof.info.get_is_symlink())
340 info.add(new Pair<string, string>(_("Target") + (": "), last_gof.info.get_symlink_target ()));
341 if(raw_type != FileType.DIRECTORY)
342 info.add(new Pair<string, string>(_("Size") + (": "), last_gof.format_size));
343 /* localized time depending on MARLIN_PREFERENCES_DATE_FORMAT locale, iso .. */
344 info.add(new Pair<string, string>(_("Modified") + (": "), last_gof.formated_modified));
345 info.add(new Pair<string, string>(_("Owner") + (": "), last_gof.info.get_attribute_string(FileAttribute.OWNER_USER_REAL)));
346
347 label.label = last_gof.info.get_name ();
348
349 update_info_panel();
350 show();
351 }
352
353 public void update_info_panel(){
354 if(orientation == Gtk.Orientation.HORIZONTAL)
355 construct_info_panel_horizontal(info);
356 else
357 construct_info_panel_vertical(info);
358 }
359
360 private void construct_info_panel_vertical(Gee.List<Pair<string, string>> item_info){
361 var box = new Box (Gtk.Orientation.VERTICAL, 0);
362
363 set_size_request (width, -1);
364
365 /*var blank_box = new VBox(false, 0);
366 blank_box.set_size_request (-1, 20);
367 box.pack_start(blank_box, false, false, 0);*/
368
369 if (evbox != null) {
370 if (evbox.parent != null)
371 evbox.parent.remove(evbox);
372 evbox.orientation = convert_parent_orientation(orientation);
373 box.pack_start(evbox, false, true, 0);
374 }
375 if (label != null) {
376 if (label.parent != null)
377 label.parent.remove(label);
378 label.set_selectable(true);
379 label.set_tooltip_text (last_gof.info.get_name ());
380 box.pack_start(label, false, false);
381 }
382
383 var sep = new Gtk.Separator(Gtk.Orientation.HORIZONTAL);
384 sep.set_margin_top (4);
385 sep.set_margin_bottom (10);
386 box.pack_start(sep, false, false);
387
388 var information = new Grid();
389 information.row_spacing = 3;
390 var alignment_ = new Gtk.Alignment(0.5f, 0, 0, 0);
391
392 int n = 0;
393 foreach(var pair in item_info){
394 /* skip the firs parameter "name" for vertical panel */
395 if (n>0) {
396
397 var lval = new Gtk.Label (pair.value);
398 var lkey = new Gtk.Label (pair.key);
399 lval.set_selectable(true);
400 lkey.set_sensitive (false);
401 lkey.set_alignment (1, 0);
402 lval.set_alignment (0, 0);
403 //lval.set_ellipsize(Pango.EllipsizeMode.MIDDLE);
404 lval.set_line_wrap (true);
405 lval.set_width_chars (10);
406
407 information.attach(lkey, 0, n, 1, 1);
408 information.attach(lval, 1, n, 1, 1);
409 }
410 n++;
411 }
412 alignment_.add(information);
413 box.pack_start(alignment_);
414
415 box.show_all();
416 set_content(box);
417 }
418
419 private void construct_info_panel_horizontal(Gee.List<Pair<string, string>> item_info){
420 var box = new Box (Gtk.Orientation.HORIZONTAL, 0);
421
422 set_size_request (-1, height);
423 if (evbox != null) {
424 if (evbox.parent != null)
425 evbox.parent.remove(evbox);
426 evbox.orientation = convert_parent_orientation(orientation);
427 box.pack_start(evbox, false, true, 0);
428 }
429
430 var alignment = new Gtk.Alignment(0, 0.5f, 0, 0);
431 var grid = new Grid ();
432 grid.set_orientation (Gtk.Orientation.HORIZONTAL);
433 alignment.add (grid);
434 box.add (alignment);
435
436 var i = 0;
437 foreach(var pair in item_info){
438 var left = (int) i/2 + i/2;
439 var top = i % 2;
440 //warning ("left %d top %d", left, top);
441
442 var lkey = new Gtk.Label (pair.key);
443 //lkey.set_size_request (65, -1);
444 lkey.set_state_flags (Gtk.StateFlags.INSENSITIVE, false);
445 //lkey.set_justify(Justification.RIGHT);
446 lkey.set_alignment(1, 0);
447 grid.attach (lkey, left, top, 1, 1);
448
449 var lval = new Label (pair.value);
450 lval.set_selectable(true);
451 lval.set_margin_right (10);
452 lval.set_alignment(0, 0);
453 lval.set_width_chars (10);
454 lval.set_ellipsize (Pango.EllipsizeMode.END);
455 grid.attach (lval, left+1, top, 1, 1);
456 i++;
457 }
458
459 box.show_all();
460 set_content(box);
461 }
462
463 private void set_content(Widget w){
464 var lw = get_child();
465 if (lw != null)
466 remove(lw);
467 add(w);
468 }
469 }
470
471 class Pair<F, G>{
472 public F key;
473 public G value;
474
475 public Pair(F key, G value){
476 this.key = key;
477 this.value = value;
478 }
479 }
480}
481
4820
=== modified file 'src/View/OverlayBar.vala'
--- src/View/OverlayBar.vala 2013-01-01 22:34:19 +0000
+++ src/View/OverlayBar.vala 2013-05-13 19:45:28 +0000
@@ -1,20 +1,20 @@
1/* 1/*
2 * Copyright (C) 2012 ammonkey <am.monkeyd@gmail.com>2 * Copyright (C) 2012 ammonkey <am.monkeyd@gmail.com>
3 * 3 *
4 * This program is free software: you can redistribute it and/or modify4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.7 * (at your option) any later version.
8 * 8 *
9 * This program is distributed in the hope that it will be useful,9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.12 * GNU General Public License for more details.
13 * 13 *
14 * You should have received a copy of the GNU General Public License14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 *16 *
17 */ 17 */
1818
19using Gtk;19using Gtk;
2020
@@ -40,14 +40,14 @@
40 public bool showbar {40 public bool showbar {
41 set {41 set {
42 _showbar = value;42 _showbar = value;
43 visible = count > 0 && value;43 visible = value && count > 0;
44 }44 }
45 get {45 get {
46 return _showbar;46 return _showbar;
47 }47 }
48 }48 }
4949
50 public OverlayBar (Marlin.View.Window win) 50 public OverlayBar (Marlin.View.Window win)
51 {51 {
52 window = win;52 window = win;
5353
@@ -166,13 +166,13 @@
166 private GOF.File? goffile = null;166 private GOF.File? goffile = null;
167 //private unowned GLib.List<GOF.File>? last_selection = null;167 //private unowned GLib.List<GOF.File>? last_selection = null;
168168
169 private void update (GLib.List<GOF.File>? files = null) 169 private void update (GLib.List<GOF.File>? files = null)
170 {170 {
171 //last_selection = files;171 //last_selection = files;
172 real_update (files);172 real_update (files);
173 }173 }
174174
175 private void update_hovered (GOF.File? file) 175 private void update_hovered (GOF.File? file)
176 {176 {
177 if (file != null) {177 if (file != null) {
178 GLib.List<GOF.File> list = null;178 GLib.List<GOF.File> list = null;
@@ -187,7 +187,7 @@
187 }187 }
188 }188 }
189189
190 private void real_update (GLib.List<GOF.File>? files = null) 190 private void real_update (GLib.List<GOF.File>? files = null)
191 {191 {
192 count = 0;192 count = 0;
193 folders_count = 0;193 folders_count = 0;
@@ -202,7 +202,7 @@
202 /* list contain only one element */202 /* list contain only one element */
203 if (files.next == null) {203 if (files.next == null) {
204 goffile = files.data;204 goffile = files.data;
205 } 205 }
206 scan_list (files);206 scan_list (files);
207 update_status ();207 update_status ();
208208
@@ -212,7 +212,7 @@
212 }212 }
213 }213 }
214214
215 private void update_status () 215 private void update_status ()
216 {216 {
217 if (count == 1) {217 if (count == 1) {
218 if (!goffile.is_folder ()) {218 if (!goffile.is_folder ()) {
@@ -252,7 +252,7 @@
252 }252 }
253 }253 }
254254
255 private void scan_list (List<GOF.File> files) 255 private void scan_list (List<GOF.File> files)
256 {256 {
257 foreach (var gof in files) {257 foreach (var gof in files) {
258 if (gof.is_folder ()) {258 if (gof.is_folder ()) {
259259
=== modified file 'src/View/PropertiesWindow.vala'
--- src/View/PropertiesWindow.vala 2013-01-28 19:20:16 +0000
+++ src/View/PropertiesWindow.vala 2013-05-13 19:45:28 +0000
@@ -24,6 +24,16 @@
2424
25public class Marlin.View.PropertiesWindow : Granite.Widgets.LightWindow25public class Marlin.View.PropertiesWindow : Granite.Widgets.LightWindow
26{26{
27 private class Pair<F, G> {
28 public F key;
29 public G value;
30
31 public Pair (F key, G value) {
32 this.key = key;
33 this.value = value;
34 }
35 }
36
27 private Gee.LinkedList<Pair<string, string>> info;37 private Gee.LinkedList<Pair<string, string>> info;
28 private Granite.Widgets.ImgEventBox evbox;38 private Granite.Widgets.ImgEventBox evbox;
29 private Granite.Widgets.XsEntry perm_code;39 private Granite.Widgets.XsEntry perm_code;
@@ -70,10 +80,10 @@
70 Box action_area = new Box (Orientation.VERTICAL, 12);80 Box action_area = new Box (Orientation.VERTICAL, 12);
71 border_width = 5;81 border_width = 5;
72 sg = new SizeGroup (SizeGroupMode.HORIZONTAL);82 sg = new SizeGroup (SizeGroupMode.HORIZONTAL);
73 83
74 add (content_area);84 add (content_area);
75 add (action_area);85 add (action_area);
76 86
77 Box content_vbox = new Box (Gtk.Orientation.VERTICAL, 0);87 Box content_vbox = new Box (Gtk.Orientation.VERTICAL, 0);
78 //var content_vbox = new VBox(false, 12);88 //var content_vbox = new VBox(false, 12);
79 content_area.pack_start (content_vbox);89 content_area.pack_start (content_vbox);
@@ -135,16 +145,16 @@
135 construct_preview_panel (preview_box);145 construct_preview_panel (preview_box);
136 add_section (notebook, _("Preview"), PanelType.PREVIEW, preview_box);146 add_section (notebook, _("Preview"), PanelType.PREVIEW, preview_box);
137 }147 }
138 148
139 set_transient_for (parent);149 set_transient_for (parent);
140 set_position (WindowPosition.CENTER_ALWAYS);150 set_position (WindowPosition.CENTER_ALWAYS);
141 set_destroy_with_parent (true);151 set_destroy_with_parent (true);
142 152
143 content_vbox.show();153 content_vbox.show();
144154
145 content_area.show_all();155 content_area.show_all();
146 show_all();156 show_all();
147 157
148 present ();158 present ();
149 }159 }
150160
@@ -363,7 +373,7 @@
363 private void construct_info_panel (Box box, Gee.LinkedList<Pair<string, string>> item_info) {373 private void construct_info_panel (Box box, Gee.LinkedList<Pair<string, string>> item_info) {
364 var information = new Grid();374 var information = new Grid();
365 information.row_spacing = 3;375 information.row_spacing = 3;
366 376
367 var label = new Label ("");377 var label = new Label ("");
368 label.use_markup = true;378 label.use_markup = true;
369 label.set_markup ("<b>" + _("Info:") + "\t\t\t</b>"); //FIXME: find a better solution for this379 label.set_markup ("<b>" + _("Info:") + "\t\t\t</b>"); //FIXME: find a better solution for this
@@ -426,7 +436,7 @@
426 combo.changed.connect (combo_open_with_changed);436 combo.changed.connect (combo_open_with_changed);
427437
428 var key_label = create_label_key (_("Open with:"), Align.CENTER);438 var key_label = create_label_key (_("Open with:"), Align.CENTER);
429 439
430 information.attach (key_label, 0, n, 1, 1);440 information.attach (key_label, 0, n, 1, 1);
431 information.attach (hcombo, 1, n, 1, 1);441 information.attach (hcombo, 1, n, 1, 1);
432442
@@ -442,15 +452,15 @@
442 uint64 fs_free = info.get_attribute_uint64 (FileAttribute.FILESYSTEM_FREE);452 uint64 fs_free = info.get_attribute_uint64 (FileAttribute.FILESYSTEM_FREE);
443453
444 n++;454 n++;
445 455
446 debug ("%d", n);456 debug ("%d", n);
447 label = new Label ("");457 label = new Label ("");
448 label.use_markup = true;458 label.use_markup = true;
449 label.set_markup ("<b>" + _("Usage:") + "\t\t\t</b>"); //FIXME: find a better solution for this459 label.set_markup ("<b>" + _("Usage:") + "\t\t\t</b>"); //FIXME: find a better solution for this
450 information.attach (label, 0, n, 1, 1);460 information.attach (label, 0, n, 1, 1);
451 461
452 n++;462 n++;
453 463
454 var key_label = create_label_key (_("Device usage:"), Align.CENTER);464 var key_label = create_label_key (_("Device usage:"), Align.CENTER);
455 information.attach (key_label, 0, n, 1, 1);465 information.attach (key_label, 0, n, 1, 1);
456 debug ("%d", n);466 debug ("%d", n);
457467
=== modified file 'src/View/ViewContainer.vala'
--- src/View/ViewContainer.vala 2013-02-19 22:00:20 +0000
+++ src/View/ViewContainer.vala 2013-05-13 19:45:28 +0000
@@ -45,7 +45,9 @@
45 public ViewContainer (Marlin.View.Window win, GLib.File location, int _view_mode = 0)45 public ViewContainer (Marlin.View.Window win, GLib.File location, int _view_mode = 0)
46 {46 {
47 window = win;47 window = win;
48 overlay_statusbar = new OverlayBar (win);
48 view_mode = _view_mode;49 view_mode = _view_mode;
50
49 /* set active tab */51 /* set active tab */
50 browser = new Browser ();52 browser = new Browser ();
51 label = new Gtk.Label("Loading...");53 label = new Gtk.Label("Loading...");
@@ -67,11 +69,7 @@
6769
68 /* overlay statusbar */70 /* overlay statusbar */
69 set_events (Gdk.EventMask.ENTER_NOTIFY_MASK | Gdk.EventMask.LEAVE_NOTIFY_MASK);71 set_events (Gdk.EventMask.ENTER_NOTIFY_MASK | Gdk.EventMask.LEAVE_NOTIFY_MASK);
70 overlay_statusbar = new OverlayBar (win);
71 add_overlay (overlay_statusbar);72 add_overlay (overlay_statusbar);
72 /*var action_showhide_context_pane = (Gtk.ToggleAction) window.main_actions.get_action("Show Hide Context Pane");
73 overlay_statusbar.showbar = !action_showhide_context_pane.get_active ();
74 action_showhide_context_pane.bind_property ("active", overlay_statusbar, "showbar", BindingFlags.INVERT_BOOLEAN);*/
75 overlay_statusbar.showbar = view_mode != ViewMode.LIST;73 overlay_statusbar.showbar = view_mode != ViewMode.LIST;
7674
77 path_changed.connect((myfile) => {75 path_changed.connect((myfile) => {
@@ -120,7 +118,7 @@
120 }118 }
121 }119 }
122120
123 private void plugin_directory_loaded () 121 private void plugin_directory_loaded ()
124 {122 {
125 Object[] data = new Object[2];123 Object[] data = new Object[2];
126 data[0] = window;124 data[0] = window;
@@ -134,7 +132,7 @@
134 //file_info_callback = slot.directory.file.info_available.connect((gof) => {132 //file_info_callback = slot.directory.file.info_available.connect((gof) => {
135 if(window.current_tab == this)133 if(window.current_tab == this)
136 window.loading_uri (slot.directory.file.uri, window.sidebar);134 window.loading_uri (slot.directory.file.uri, window.sidebar);
137 135
138 /*Source.remove((uint) file_info_callback);136 /*Source.remove((uint) file_info_callback);
139 });*/137 });*/
140 }138 }
@@ -151,31 +149,27 @@
151149
152 if (Posix.getuid() == 0)150 if (Posix.getuid() == 0)
153 tab_name = tab_name + " " + _("(as Administrator)");151 tab_name = tab_name + " " + _("(as Administrator)");
154 152
155 /* update window title */153 /* update window title */
156 if(window.current_tab == this) {154 if(window.current_tab == this) {
157 window.set_title(tab_name);155 window.set_title(tab_name);
158 if (window.top_menu.location_bar != null)156 if (window.top_menu.location_bar != null)
159 window.top_menu.location_bar.path = aslot.directory.file.location.get_parse_name(); 157 window.top_menu.location_bar.path = aslot.directory.file.location.get_parse_name();
160 }158 }
161159
162 }160 }
163161
164 /* handle directory not found, contextview */162 /* handle directory not found */
165 public void directory_done_loading () {163 public void directory_done_loading () {
166 if (!slot.directory.file.exists) {164 if (!slot.directory.file.exists) {
167 content = new DirectoryNotFound (slot.directory, this);165 content = new DirectoryNotFound (slot.directory, this);
168 } else {166 } else {
169 if (select_childs != null) 167 if (select_childs != null)
170 ((FM.Directory.View) slot.view_box).select_glib_files (select_childs);168 ((FM.Directory.View) slot.view_box).select_glib_files (select_childs);
171 }169 }
172 sync_contextview();
173170
174 warning ("directory done loading");171 warning ("directory done loading");
175 //coltest TODO remove172
176 /*if (window.contextview != null)
177 window.contextview.update ();*/
178
179 slot.directory.done_loading.disconnect (directory_done_loading);173 slot.directory.done_loading.disconnect (directory_done_loading);
180 }174 }
181175
@@ -196,7 +190,7 @@
196 /* check if the requested location is a parent of the previous one */190 /* check if the requested location is a parent of the previous one */
197 if (slot != null) {191 if (slot != null) {
198 var parent = slot.location.get_parent ();192 var parent = slot.location.get_parent ();
199 if (parent != null && parent.equal (location)) 193 if (parent != null && parent.equal (location))
200 select_childs.prepend (slot.directory.file.location);194 select_childs.prepend (slot.directory.file.location);
201 }195 }
202 }196 }
@@ -243,29 +237,6 @@
243 overlay_statusbar.showbar = nview != ViewMode.LIST;237 overlay_statusbar.showbar = nview != ViewMode.LIST;
244 }238 }
245239
246 public void sync_contextview(){
247 if (!slot.directory.file.exists) {
248 if (window.contextview != null) {
249 window.main_box.remove (window.contextview);
250 window.contextview = null;
251 }
252 return;
253 }
254
255 if (window.contextview == null &&
256 ((Gtk.ToggleAction) window.main_actions.get_action("Show Hide Context Pane")).get_active())
257 {
258 window.contextview = new ContextView(window, true, window.main_box.orientation);
259
260 window.main_box.notify.connect((prop) => {
261 if(window.contextview != null && prop.name == "orientation")
262 window.contextview.parent_orientation = window.main_box.orientation;
263 });
264 window.main_box.pack2(window.contextview, false, true);
265 window.contextview.show ();
266 }
267 }
268
269 public GOF.Window.Slot? get_active_slot () {240 public GOF.Window.Slot? get_active_slot () {
270 if (mwcol != null)241 if (mwcol != null)
271 return mwcol.active_slot;242 return mwcol.active_slot;
@@ -306,7 +277,7 @@
306 // You see if I would just use back(n) the reference to n would be passed277 // You see if I would just use back(n) the reference to n would be passed
307 // in the clusure, restulting in a value of n which would always be n=1. So278 // in the clusure, restulting in a value of n which would always be n=1. So
308 // by introducting a new variable I can bypass this anoyance.279 // by introducting a new variable I can bypass this anoyance.
309 var item = new Gtk.MenuItem.with_label (path); 280 var item = new Gtk.MenuItem.with_label (path);
310 item.activate.connect(() => { back(cn); });281 item.activate.connect(() => { back(cn); });
311 back_menu.insert(item, -1);282 back_menu.insert(item, -1);
312 }283 }
@@ -322,7 +293,7 @@
322 var n = 1;293 var n = 1;
323 foreach(var path in list){294 foreach(var path in list){
324 int cn = n++; // For explenation look up295 int cn = n++; // For explenation look up
325 var item = new Gtk.MenuItem.with_label (path); 296 var item = new Gtk.MenuItem.with_label (path);
326 item.activate.connect(() => forward(cn));297 item.activate.connect(() => forward(cn));
327 forward_menu.insert(item, -1);298 forward_menu.insert(item, -1);
328 }299 }
329300
=== modified file 'src/View/Window.vala'
--- src/View/Window.vala 2013-05-12 20:41:24 +0000
+++ src/View/Window.vala 2013-05-13 19:45:28 +0000
@@ -38,8 +38,6 @@
38 public Marlin.Places.Sidebar sidebar;38 public Marlin.Places.Sidebar sidebar;
3939
40 public ViewContainer? current_tab;40 public ViewContainer? current_tab;
41 public Granite.Widgets.CollapsiblePaned main_box;
42 public ContextView? contextview = null;
4341
44 public Gtk.ActionGroup main_actions;42 public Gtk.ActionGroup main_actions;
45 public Gtk.AccelGroup accel_group;43 public Gtk.AccelGroup accel_group;
@@ -47,24 +45,6 @@
47 public Granite.Widgets.ToolButtonWithMenu button_forward;45 public Granite.Widgets.ToolButtonWithMenu button_forward;
48 public Granite.Widgets.ToolButtonWithMenu button_back;46 public Granite.Widgets.ToolButtonWithMenu button_back;
4947
50 private const int horizontal_contextplane_max_width = 910;
51 private const int horizontal_contextplane_max_height = 380; // after which we will go vertical
52
53 private Gtk.CssProvider css_provider = null;
54 private bool _auto_theme;
55 public bool auto_theme {
56 set {
57 _auto_theme = value;
58 if (value)
59 load_css_style ();
60 else
61 unload_css_style ();
62 }
63 get {
64 return _auto_theme;
65 }
66 }
67
68 public bool can_go_up{48 public bool can_go_up{
69 set{49 set{
70 main_actions.get_action("Up").set_sensitive(value);50 main_actions.get_action("Up").set_sensitive(value);
@@ -82,7 +62,7 @@
82 main_actions.get_action("Back").set_sensitive(value);62 main_actions.get_action("Back").set_sensitive(value);
83 }63 }
84 }64 }
85 65
86 public signal void item_hovered (GOF.File gof_file);66 public signal void item_hovered (GOF.File gof_file);
87 public signal void selection_changed (GLib.List<GOF.File> gof_file);67 public signal void selection_changed (GLib.List<GOF.File> gof_file);
8868
@@ -131,8 +111,10 @@
131 ui.insert_action_group(main_actions, 0);111 ui.insert_action_group(main_actions, 0);
132 ui.ensure_update();112 ui.ensure_update();
133113
134 /* Menubar */114 /* Menubar. We only need a menubar for special cases like global menus or HUD.
115 We don't need to show it in any other case */
135 menu_bar = ui.get_widget("/MenuBar");116 menu_bar = ui.get_widget("/MenuBar");
117 menu_bar.no_show_all = true;
136 menu_bar.hide ();118 menu_bar.hide ();
137119
138 /* Topmenu */120 /* Topmenu */
@@ -140,10 +122,10 @@
140122
141 /* Info Bar */123 /* Info Bar */
142 info_bar = new Gtk.InfoBar ();124 info_bar = new Gtk.InfoBar ();
143 125
144 var label = new Gtk.Label (_("Files isn't your default file manager."));126 var label = new Gtk.Label (_("Files isn't your default file manager."));
145 label.set_line_wrap (true);127 label.set_line_wrap (true);
146 128
147 var expander = new Label ("");129 var expander = new Label ("");
148 expander.hexpand = true;130 expander.hexpand = true;
149131
@@ -157,18 +139,18 @@
157 make_marlin_default_fm (false);139 make_marlin_default_fm (false);
158 show_infobar (false);140 show_infobar (false);
159 });141 });
160 142
161 var bbox = new Gtk.ButtonBox (Gtk.Orientation.HORIZONTAL);143 var bbox = new Gtk.ButtonBox (Gtk.Orientation.HORIZONTAL);
162 bbox.set_spacing (3);144 bbox.set_spacing (3);
163 bbox.pack_start (make_default, true, true, 5);145 bbox.pack_start (make_default, true, true, 5);
164 bbox.pack_start (ignore, true, true, 5);146 bbox.pack_start (ignore, true, true, 5);
165 147
166 ((Box)info_bar.get_content_area ()).add (label);148 ((Box)info_bar.get_content_area ()).add (label);
167 ((Box)info_bar.get_content_area ()).add (expander);149 ((Box)info_bar.get_content_area ()).add (expander);
168 ((Box)info_bar.get_content_area ()).add (bbox);150 ((Box)info_bar.get_content_area ()).add (bbox);
169 151
170 show_infobar (!is_marlin_mydefault_fm ());152 show_infobar (!is_marlin_mydefault_fm ());
171 153
172 /* Contents */154 /* Contents */
173 tabs = new Notebook();155 tabs = new Notebook();
174 tabs.show_border = false;156 tabs.show_border = false;
@@ -180,24 +162,13 @@
180 sidebar = new Marlin.Places.Sidebar (this);162 sidebar = new Marlin.Places.Sidebar (this);
181 Preferences.settings.bind("sidebar-zoom-level", sidebar, "zoom-level", SettingsBindFlags.DEFAULT);163 Preferences.settings.bind("sidebar-zoom-level", sidebar, "zoom-level", SettingsBindFlags.DEFAULT);
182164
183 /* Devide main views into sidebars */
184 main_box = new Granite.Widgets.CollapsiblePaned (Orientation.VERTICAL);
185 main_box.show();
186
187 var lside_pane = new Granite.Widgets.ThinPaned ();165 var lside_pane = new Granite.Widgets.ThinPaned ();
188 lside_pane.show();166 lside_pane.show();
189167
190 lside_pane.pack1(sidebar, false, false);168 lside_pane.pack1(sidebar, false, false);
191 lside_pane.pack2(main_box, true, true);169 lside_pane.pack2(tabs, true, true);
192170
193 sidebar.show ();171 sidebar.show ();
194 main_box.show ();
195
196 main_box.pack1(tabs, true, true);
197
198 ((Gtk.ToggleAction) main_actions.get_action("Show Hide Context Pane")).set_active(Preferences.settings.get_boolean("start-with-contextview"));
199
200 main_box.collapse_mode = Granite.CollapseMode.BOTTOM;
201172
202 /*/173 /*/
203 /* Pack up all the view174 /* Pack up all the view
@@ -230,24 +201,16 @@
230 }201 }
231 show();202 show();
232203
233 Preferences.settings.bind("show-menubar", menu_bar, "visible", 0);
234 Preferences.settings.bind("show-menubar", main_actions.get_action("Show Hide Menubar"), "active", 0);
235 //Preferences.settings.bind("show-menubar", top_menu.compact_menu_button, "visible", SettingsBindFlags.INVERT_BOOLEAN);
236 Preferences.settings.bind("show-hiddenfiles", main_actions.get_action("Show Hidden Files"), "active", 0);
237 Preferences.settings.bind("interpret-desktop-files", main_actions.get_action("Show Desktop Files"), "active", SettingsBindFlags.INVERT_BOOLEAN);
238 Preferences.settings.bind("show-sidebar", sidebar, "visible", 0);204 Preferences.settings.bind("show-sidebar", sidebar, "visible", 0);
239 Preferences.settings.bind("show-sidebar", main_actions.get_action("Show Hide Sidebar"), "active", 0);205 Preferences.settings.bind("show-sidebar", main_actions.get_action("Show Hide Sidebar"), "active", 0);
240206
241 /* auto-theme Marlin's specific widgets. */
242 Preferences.settings.bind("auto-theme", this, "auto-theme", SettingsBindFlags.DEFAULT);
243
244 /*/207 /*/
245 /* Connect and abstract signals to local ones208 /* Connect and abstract signals to local ones
246 /*/209 /*/
247210
248 window_state_event.connect ((event) => {211 window_state_event.connect ((event) => {
249 if ((bool) event.changed_mask & Gdk.WindowState.MAXIMIZED) {212 if ((bool) event.changed_mask & Gdk.WindowState.MAXIMIZED) {
250 Preferences.settings.set_boolean("maximized", 213 Preferences.settings.set_boolean("maximized",
251 (bool) get_window().get_state() & Gdk.WindowState.MAXIMIZED);214 (bool) get_window().get_state() & Gdk.WindowState.MAXIMIZED);
252 }215 }
253 return false;216 return false;
@@ -279,9 +242,6 @@
279242
280 Gtk.Allocation win_alloc;243 Gtk.Allocation win_alloc;
281 get_allocation (out win_alloc);244 get_allocation (out win_alloc);
282 resized (win_alloc);
283
284 size_allocate.connect(resized);
285245
286 /* keyboard shortcuts bindings */246 /* keyboard shortcuts bindings */
287 if (app.is_first_window ((Gtk.Window) this)) {247 if (app.is_first_window ((Gtk.Window) this)) {
@@ -297,21 +257,6 @@
297257
298 }258 }
299259
300 private void load_css_style () {
301 css_provider = new Gtk.CssProvider();
302 try {
303 css_provider.load_from_data (CSS_STYLE, -1);
304 StyleContext.add_provider_for_screen (screen, css_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION);
305 } catch (Error e) {
306 warning ("Could not add css provider. Some widgets will not look as intended. %s", e.message);
307 }
308 }
309
310 private void unload_css_style () {
311 if (css_provider != null)
312 StyleContext.remove_provider_for_screen (screen, css_provider);
313 }
314
315 private void show_infobar (bool val) {260 private void show_infobar (bool val) {
316 if (val)261 if (val)
317 info_bar.show_all ();262 info_bar.show_all ();
@@ -323,7 +268,7 @@
323 public virtual signal void go_up () {268 public virtual signal void go_up () {
324 action_go_up ();269 action_go_up ();
325 }270 }
326 271
327 [Signal (action=true)]272 [Signal (action=true)]
328 public virtual signal void edit_path () {273 public virtual signal void edit_path () {
329 action_edit_path ();274 action_edit_path ();
@@ -335,7 +280,7 @@
335280
336281
337 public GOF.Window.Slot? get_active_slot() {282 public GOF.Window.Slot? get_active_slot() {
338 if (current_tab != null) 283 if (current_tab != null)
339 return current_tab.get_active_slot ();284 return current_tab.get_active_slot ();
340 return null;285 return null;
341 }286 }
@@ -363,17 +308,11 @@
363 current_tab.update_location_state(false);308 current_tab.update_location_state(false);
364 /* update radio action view state */309 /* update radio action view state */
365 update_action_radio_view(current_tab.view_mode);310 update_action_radio_view(current_tab.view_mode);
366 /* sync ContextView */
367 current_tab.sync_contextview();
368 /* sync selection */311 /* sync selection */
369 if (cur_slot.view_box != null)312 if (cur_slot.view_box != null)
370 ((FM.Directory.View) cur_slot.view_box).sync_selection();313 ((FM.Directory.View) cur_slot.view_box).sync_selection();
371 /* sync sidebar selection */314 /* sync sidebar selection */
372 loading_uri (current_tab.slot.directory.file.uri, sidebar);315 loading_uri (current_tab.slot.directory.file.uri, sidebar);
373
374 /* focus the main view */
375 //((FM.Directory.View) current_tab.slot.view_box).grab_focus();
376 //current_tab.content.grab_focus();
377 }316 }
378 }317 }
379 }318 }
@@ -391,7 +330,7 @@
391 button.clicked.connect(() => {330 button.clicked.connect(() => {
392 remove_tab(content);331 remove_tab(content);
393 });332 });
394 333
395 if (is_close_first ()) {334 if (is_close_first ()) {
396 hbox.pack_start (button, false, false, 0);335 hbox.pack_start (button, false, false, 0);
397 hbox.pack_start (content.label, false, false, 0);336 hbox.pack_start (content.label, false, false, 0);
@@ -401,7 +340,7 @@
401 }340 }
402341
403 hbox.show_all();342 hbox.show_all();
404 343
405 var eventbox = new EventBox();344 var eventbox = new EventBox();
406 eventbox.add(hbox);345 eventbox.add(hbox);
407 eventbox.set_visible_window(false);346 eventbox.set_visible_window(false);
@@ -435,41 +374,11 @@
435374
436 tabs.remove(view_container);375 tabs.remove(view_container);
437 }376 }
438 377
439 public void add_window(File location){378 public void add_window(File location){
440 ((Marlin.Application) application).create_window (location, screen);379 ((Marlin.Application) application).create_window (location, screen);
441 }380 }
442381
443#if VALA_0_14
444 private void resized(Gtk.Allocation allocation){
445#else
446 private void resized(Gdk.Rectangle allocation){
447#endif
448 Orientation current_state = main_box.orientation;
449
450 int ctxview_orientation = Preferences.settings.get_enum("contextview-orientation");
451
452 Orientation future_state = Orientation.VERTICAL; // Because how Paned class works, this is inverted
453 switch (ctxview_orientation) {
454 case 0:
455 future_state = Orientation.VERTICAL;
456 break;
457 case 1:
458 future_state = Orientation.HORIZONTAL;
459 break;
460 case 2:
461 if(allocation.width > horizontal_contextplane_max_width &&
462 allocation.height > horizontal_contextplane_max_height){
463 future_state = Orientation.HORIZONTAL;
464 }
465 break;
466 }
467
468 if(current_state != future_state){
469 main_box.orientation = future_state;
470 }
471 }
472
473 private void undo_actions_set_insensitive () {382 private void undo_actions_set_insensitive () {
474 Gtk.Action action;383 Gtk.Action action;
475384
@@ -491,7 +400,7 @@
491 action.set_tooltip (_("Undo the last action"));400 action.set_tooltip (_("Undo the last action"));
492 }401 }
493 action.set_sensitive (data != null && data.undo_label != null);402 action.set_sensitive (data != null && data.undo_label != null);
494 403
495 action = main_actions.get_action ("Redo");404 action = main_actions.get_action ("Redo");
496 if (data != null && data.redo_label != null && sensitive) {405 if (data != null && data.redo_label != null && sensitive) {
497 action.set_label (data.redo_label);406 action.set_label (data.redo_label);
@@ -531,9 +440,6 @@
531 if (is_maximized == false)440 if (is_maximized == false)
532 Preferences.settings.set_string("geometry", geometry);441 Preferences.settings.set_string("geometry", geometry);
533 Preferences.settings.set_boolean("maximized", is_maximized);442 Preferences.settings.set_boolean("maximized", is_maximized);
534
535 Preferences.settings.set_boolean("start-with-contextview",
536 ((Gtk.ToggleAction) main_actions.get_action("Show Hide Context Pane")).get_active());
537 }443 }
538444
539 public Gtk.ActionGroup get_actiongroup () {445 public Gtk.ActionGroup get_actiongroup () {
@@ -544,18 +450,11 @@
544 top_menu.setup_items();450 top_menu.setup_items();
545 }451 }
546452
547 /*
548 private void action_toolbar_editor_callback (Gtk.Action action) {
549 marlin_toolbar_editor_dialog_show (this);
550 }
551 */
552
553 private void action_go_up () {453 private void action_go_up () {
554 current_tab.up();454 current_tab.up();
555 }455 }
556456
557 private void action_edit_path () {457 private void action_edit_path () {
558 //top_menu.location_bar.state = false;
559 top_menu.location_bar.get_child ().grab_focus ();458 top_menu.location_bar.get_child ().grab_focus ();
560 }459 }
561460
@@ -566,17 +465,16 @@
566 private void action_go_forward (Gtk.Action action) {465 private void action_go_forward (Gtk.Action action) {
567 current_tab.forward();466 current_tab.forward();
568 }467 }
569 468
570 private uint t_reload_cb = 0;469 private uint t_reload_cb = 0;
571 470
572 private bool real_reload_callback () {471 private bool real_reload_callback () {
573 current_tab.reload ();472 current_tab.reload ();
574 t_reload_cb = 0;473 t_reload_cb = 0;
575 return false;474 return false;
576 }475 }
577 476
578 private bool is_close_first () {477 private bool is_close_first () {
579
580 string path = "/apps/metacity/general/button_layout";478 string path = "/apps/metacity/general/button_layout";
581 GConf.Client cl = GConf.Client.get_default ();479 GConf.Client cl = GConf.Client.get_default ();
582 string key;480 string key;
@@ -597,7 +495,7 @@
597 return false;495 return false;
598496
599 }497 }
600 498
601 private bool is_marlin_mydefault_fm ()499 private bool is_marlin_mydefault_fm ()
602 {500 {
603 bool trash_uri_is_default = false;501 bool trash_uri_is_default = false;
@@ -608,7 +506,7 @@
608506
609 return foldertype_is_default && trash_uri_is_default;507 return foldertype_is_default && trash_uri_is_default;
610 }508 }
611 509
612 private void make_marlin_default_fm (bool active)510 private void make_marlin_default_fm (bool active)
613 {511 {
614 if (active) {512 if (active) {
@@ -623,7 +521,7 @@
623 }521 }
624 } else {522 } else {
625 AppInfo.reset_type_associations ("inode/directory");523 AppInfo.reset_type_associations ("inode/directory");
626 AppInfo.reset_type_associations ("x-scheme-handler/trash"); 524 AppInfo.reset_type_associations ("x-scheme-handler/trash");
627 }525 }
628 }526 }
629527
@@ -636,43 +534,16 @@
636 /*private void action_show_hidden_files (Gtk.Action action) {534 /*private void action_show_hidden_files (Gtk.Action action) {
637 }*/535 }*/
638536
639 private void action_show_hide_contextview (Gtk.Action action) {
640 if (((Gtk.ToggleAction)action).get_active()) {
641 current_tab.sync_contextview();
642 ((FM.Directory.View) current_tab.slot.view_box).sync_selection();
643 } else {
644 //main_box.remove (contextview);
645 if (contextview != null) {
646 contextview.destroy();
647 contextview = null;
648 }
649 }
650 }
651
652
653 private void action_show_hide_menubar (Gtk.Action action) {
654 bool vis = true;
655 menu_bar.get("visible", &vis);
656 if (vis)
657 top_menu.app_menu.hide();
658 else
659 top_menu.app_menu.show_all();
660 }
661
662 /*private void action_show_hide_sidebar (Gtk.Action action) {
663 stdout.printf ("TODO\n");
664 }*/
665
666 private void action_undo_callback (Gtk.Action action) {537 private void action_undo_callback (Gtk.Action action) {
667 update_undo_actions ();538 update_undo_actions ();
668 undo_manager.undo (null);539 undo_manager.undo (null);
669 }540 }
670 541
671 private void action_redo_callback (Gtk.Action action) {542 private void action_redo_callback (Gtk.Action action) {
672 update_undo_actions ();543 update_undo_actions ();
673 undo_manager.redo (null);544 undo_manager.redo (null);
674 }545 }
675 546
676 private void action_home_callback (Gtk.Action action) {547 private void action_home_callback (Gtk.Action action) {
677 current_tab.path_changed(File.new_for_commandline_arg(Environment.get_home_dir()));548 current_tab.path_changed(File.new_for_commandline_arg(Environment.get_home_dir()));
678 }549 }
@@ -684,17 +555,17 @@
684 private void action_go_to_network_callback (Gtk.Action action) {555 private void action_go_to_network_callback (Gtk.Action action) {
685 current_tab.path_changed(File.new_for_commandline_arg(Marlin.NETWORK_URI));556 current_tab.path_changed(File.new_for_commandline_arg(Marlin.NETWORK_URI));
686 }557 }
687 558
688 private void action_zoom_in_callback (Gtk.Action action) {559 private void action_zoom_in_callback (Gtk.Action action) {
689 if (current_tab != null && current_tab.slot != null) 560 if (current_tab != null && current_tab.slot != null)
690 ((FM.Directory.View) current_tab.slot.view_box).zoom_in ();561 ((FM.Directory.View) current_tab.slot.view_box).zoom_in ();
691 }562 }
692 563
693 private void action_zoom_out_callback (Gtk.Action action) {564 private void action_zoom_out_callback (Gtk.Action action) {
694 if (current_tab != null && current_tab.slot != null) 565 if (current_tab != null && current_tab.slot != null)
695 ((FM.Directory.View) current_tab.slot.view_box).zoom_out ();566 ((FM.Directory.View) current_tab.slot.view_box).zoom_out ();
696 }567 }
697 568
698 void action_next_tab()569 void action_next_tab()
699 {570 {
700 if(tabs.page == tabs.get_n_pages() - 1)571 if(tabs.page == tabs.get_n_pages() - 1)
@@ -708,7 +579,7 @@
708 }579 }
709580
710 private void action_zoom_normal_callback (Gtk.Action action) {581 private void action_zoom_normal_callback (Gtk.Action action) {
711 if (current_tab != null && current_tab.slot != null) 582 if (current_tab != null && current_tab.slot != null)
712 ((FM.Directory.View) current_tab.slot.view_box).zoom_normal ();583 ((FM.Directory.View) current_tab.slot.view_box).zoom_normal ();
713 }584 }
714585
@@ -735,7 +606,7 @@
735 "translate", Marlin.TRANSLATE_URL,606 "translate", Marlin.TRANSLATE_URL,
736 "bug", Marlin.BUG_URL);607 "bug", Marlin.BUG_URL);
737 }608 }
738 609
739 void show_report() {610 void show_report() {
740 try { Gtk.show_uri (screen, Marlin.BUG_URL, -1); }611 try { Gtk.show_uri (screen, Marlin.BUG_URL, -1); }
741 catch (Error e) { critical("Can't open the link"); }612 catch (Error e) { critical("Can't open the link"); }
@@ -836,7 +707,7 @@
836 /* label, accelerator */ N_("Previous Tab"), "<control>Page_Up",707 /* label, accelerator */ N_("Previous Tab"), "<control>Page_Up",
837 /* tooltip */ "",708 /* tooltip */ "",
838 action_previous_tab },709 action_previous_tab },
839 /* name, stock id */ { "Connect to Server", null, 710 /* name, stock id */ { "Connect to Server", null,
840 /* label, accelerator */ N_("Connect to _Server..."), null,711 /* label, accelerator */ N_("Connect to _Server..."), null,
841 /* tooltip */ N_("Connect to a remote computer or shared disk"),712 /* tooltip */ N_("Connect to a remote computer or shared disk"),
842 action_connect_to_server_callback },713 action_connect_to_server_callback },
@@ -867,21 +738,6 @@
867 null,738 null,
868 //action_show_hidden_files,739 //action_show_hidden_files,
869 true },740 true },
870 /* name, stock id */ { "Show Desktop Files", null,
871 /* label, accelerator */ N_("Show _Desktop Files"), "<control>D",
872 /* tooltip */ N_("Toggle the display of desktop files"),
873 null,
874 true },
875 /* name, stock id */ { "Show Hide Context Pane", null,
876 /* label, accelerator */ N_("_Context Pane"), "F7",
877 /* tooltip */ N_("Change the visibility of the context pane"),
878 action_show_hide_contextview,
879 /* is_active */ true },
880 /* name, stock id */ { "Show Hide Menubar", null,
881 /* label, accelerator */ N_("_Menubar"), "F8",
882 /* tooltip */ N_("Change the visibility of this window's menubar"),
883 action_show_hide_menubar,
884 /* is_active */ true },
885 /* name, stock id */ { "Show Hide Sidebar", null,741 /* name, stock id */ { "Show Hide Sidebar", null,
886 /* label, accelerator */ N_("_Places"), "F9",742 /* label, accelerator */ N_("_Places"), "F9",
887 /* tooltip */ N_("Change the visibility of this window's side pane"),743 /* tooltip */ N_("Change the visibility of this window's side pane"),
@@ -900,80 +756,7 @@
900 { "view-as-columns", null,756 { "view-as-columns", null,
901 N_("Columns"), "<control>3", null,757 N_("Columns"), "<control>3", null,
902 ViewMode.MILLER }758 ViewMode.MILLER }
759
903 };760 };
904
905 /*enum RowColor {
906 NONE,
907 BUTTER,
908 ORANGE,
909 CHOCOLATE,
910 CHAMELEON,
911 SKYBLUE,
912 PLUM,
913 RED,
914 LIGHTGRAY,
915 DARKGRAY,
916 }
917
918 static const Gtk.RadioActionEntry color_radio_entries[] = {
919 { "set-color-clear", null,
920 N_("None"), null, null,
921 RowColor.NONE },
922 { "set-color-butter", null,
923 N_("Butter"), null, null,
924 RowColor.BUTTER },
925 { "set-color-orange", null,
926 N_("Orange"), null, null,
927 RowColor.ORANGE },
928 { "set-color-chocolate", null,
929 N_("Chocolate"), null, null,
930 RowColor.CHOCOLATE },
931 { "set-color-chameleon", null,
932 N_("Green"), null, null,
933 RowColor.CHAMELEON },
934 { "set-color-skyblue", null,
935 N_("Sky Blue"), null, null,
936 RowColor.SKYBLUE },
937 { "set-color-plum", null,
938 N_("Plum"), null, null,
939 RowColor.PLUM },
940 { "set-color-red", null,
941 N_("Scarlet Red"), null, null,
942 RowColor.RED },
943 { "set-color-lightgray", null,
944 N_("Light Gray"), null, null,
945 RowColor.LIGHTGRAY },
946 { "set-color-darkgray", null,
947 N_("Dark Gray"), null, null,
948 RowColor.DARKGRAY }
949 };*/
950
951 private const string CSS_STYLE = """
952 ExoIconView.view {
953 background-color: @base_color;
954 }
955
956 .sidebar,
957 .sidebar .view {
958 background-color: @bg_color;
959 }
960
961 MarlinViewWindow * {
962 -GtkPaned-handle-size: 1;
963 }
964
965 /*MarlinViewWindow .pane-separator {*/
966 VarkaWidgetsCollapsiblePaned,
967 VarkaWidgetsCollapsiblePaned.pane-separator {
968 -GtkPaned-handle-size: 1;
969 background-color: shade (@bg_color, 0.95);
970 border-color: @dark_bg_color;
971 border-style: solid;
972 border-width: 0;
973 }
974
975 """;
976
977 }761 }
978}762}
979
980763
=== modified file 'src/pantheon-files-ui.xml'
--- src/pantheon-files-ui.xml 2013-05-12 20:41:24 +0000
+++ src/pantheon-files-ui.xml 2013-05-13 19:45:28 +0000
@@ -16,12 +16,9 @@
16 <separator/>16 <separator/>
17 <menuitem name="Connect to Server" action="Connect to Server"/>17 <menuitem name="Connect to Server" action="Connect to Server"/>
18 <separator/>18 <separator/>
19 <!--<placeholder name="Close Items Placeholder"/>-->
20 <menuitem name="Close" action="Close"/>19 <menuitem name="Close" action="Close"/>
21 </menu>20 </menu>
22 <menu name="Edit" action="Edit">21 <menu name="Edit" action="Edit">
23 <!--<placeholder name="Undostack Actions"/>
24 <separator/>-->
25 <placeholder name="Undostack Actions">22 <placeholder name="Undostack Actions">
26 <menuitem name="Undo" action="Undo"/>23 <menuitem name="Undo" action="Undo"/>
27 <menuitem name="Redo" action="Redo"/>24 <menuitem name="Redo" action="Redo"/>
@@ -29,81 +26,37 @@
29 <separator/>26 <separator/>
30 <placeholder name="Clipboard Actions"/>27 <placeholder name="Clipboard Actions"/>
31 <separator/>28 <separator/>
32 <!--<placeholder name="Select Items"/>-->
33 <placeholder name="File Items Placeholder"/>29 <placeholder name="File Items Placeholder"/>
34 <separator/>30 <separator/>
35 <placeholder name="Dangerous File Actions"/>31 <placeholder name="Dangerous File Actions"/>
36 <separator/>32 <separator/>
37 <!--<menuitem name="ToolbarEditor" action="ToolbarEditor"/>-->
38 <!--<menu action="ColorMenu">-->
39 <!-- <menuitem action="set-color-clear" />
40 <menuitem action="set-color-butter" />
41 <menuitem action="set-color-orange" />
42 <menuitem action="set-color-chocolate" />
43 <menuitem action="set-color-chameleon" />
44 <menuitem action="set-color-skyblue" />
45 <menuitem action="set-color-plum" />
46 <menuitem action="set-color-red" />
47 <menuitem action="set-color-lightgray" />
48 <menuitem action="set-color-darkgray" />-->
49 <!--</menu>-->
50
51 <!--<menuitem name="Preferences" action="Preferences"/>-->
52 </menu>33 </menu>
53 <menu action="View">34 <menu action="View">
54 <!--<menuitem name="Stop" action="Stop"/>-->
55 <menuitem name="Reload" action="Reload"/>35 <menuitem name="Reload" action="Reload"/>
56 <separator/>36 <separator/>
57 <!--<menuitem name="Show Hide Toolbar" action="Show Hide Toolbar"/>-->37 <menuitem name="Show Hide Sidebar" action="Show Hide Sidebar"/>
58 <menuitem name="Show Hide Menubar" action="Show Hide Menubar"/>38 <separator/>
59 <menuitem name="Show Hide Sidebar" action="Show Hide Sidebar"/>
60 <separator/>
61
62 <menuitem name="Show Desktop Files" action="Show Desktop Files"/>
63 <!--<separator/>-->
64 <placeholder name="View Items Placeholder"/>39 <placeholder name="View Items Placeholder"/>
65 <separator/>40 <separator/>
66 <placeholder name="Zoom Items Placeholder">41 <placeholder name="Zoom Items Placeholder">
67 <menuitem name="Zoom In" action="Zoom In"/>42 <menuitem name="Zoom In" action="Zoom In"/>
68 <menuitem name="Zoom Out" action="Zoom Out"/>43 <menuitem name="Zoom Out" action="Zoom Out"/>
69 <menuitem name="Zoom Normal" action="Zoom Normal"/>44 <menuitem name="Zoom Normal" action="Zoom Normal"/>
70 </placeholder>45 </placeholder>
71 <!--<separator/>46 <separator/>
72 <placeholder name="Show Hide Clutter">47 <menuitem action="view-as-icons" />
73 <menuitem name="Clutterflow" action="Show Hide Clutter"/>48 <menuitem action="view-as-detailed-list" />
74 </placeholder>49 <menuitem action="view-as-columns" />
75 <menuitem name="Embed Terminal" action="Show Hide Embed Terminal"/>
76 <placeholder name="View Choices">
77 <separator/>
78 <placeholder name="Extra Viewer"/>
79 <separator name="Before Short List"/>
80 <placeholder name="Short List"/>
81 </placeholder>-->
82 <separator/>
83 <menuitem action="view-as-icons" />
84 <menuitem action="view-as-detailed-list" />
85 <menuitem action="view-as-columns" />
86 </menu>50 </menu>
87 <menu action="Go">51 <menu action="Go">
88 <menuitem name="Up" action="Up"/>52 <menuitem name="Up" action="Up"/>
89 <menuitem name="Back" action="Back"/>53 <menuitem name="Back" action="Back"/>
90 <menuitem name="Forward" action="Forward"/>54 <menuitem name="Forward" action="Forward"/>
91 <separator/>55 <separator/>
92 <menuitem name="Home" action="Home"/>56 <menuitem name="Home" action="Home"/>
93 <!--<menuitem name="Computer" action="Go to Computer"/>-->57 <menuitem name="Go to Trash" action="Go to Trash"/>
94 <menuitem name="Go to Trash" action="Go to Trash"/>58 <menuitem name="Go to Network" action="Go to Network"/>
95 <menuitem name="Go to Network" action="Go to Network"/>
96 <!-- <menuitem name="Go to Location" action="Go to Location"/>
97 <menuitem name="Search" action="Search"/>
98 <separator/>
99 <placeholder name="History Placeholder"/>-->
100 </menu>59 </menu>
101 <!--<menu action="Bookmarks">
102 <menuitem name="Add Bookmark" action="Add Bookmark"/>
103 <menuitem name="Edit Bookmark" action="Edit Bookmarks"/>
104 <separator/>
105 <placeholder name="Bookmarks Placeholder"/>
106 </menu>-->
107 <menu action="Help">60 <menu action="Help">
108 <menuitem name="GetHelp" action="GetHelp"/>61 <menuitem name="GetHelp" action="GetHelp"/>
109 <menuitem name="Translate" action="Translate"/>62 <menuitem name="Translate" action="Translate"/>
@@ -112,27 +65,9 @@
112 <menuitem name="About" action="About"/>65 <menuitem name="About" action="About"/>
113 </menu>66 </menu>
114</menubar>67</menubar>
115<!--<popup name="background">
116 <placeholder name="Before Zoom Items">
117 <placeholder name="New Window Items"/>
118 <placeholder name="New Object Items"/>
119 <separator/>
120 <placeholder name="Extension Actions"/>
121 </placeholder>
122 <separator/>
123 <placeholder name="Zoom Items">
124 <menuitem name="Zoom Normal" action="Zoom Normal"/>
125 </placeholder>
126 <separator/>
127 <placeholder name="After Zoom Items"/>
128</popup>-->
12968
130<popup name="ToolbarMenu" accelerators="false">69<popup name="ToolbarMenu" accelerators="false">
131 <!--<menuitem name="Show Hide Context Pane" action="Show Hide Context Pane"/>-->
132 <menuitem name="Show Hide Menubar" action="Show Hide Menubar"/>
133 <menuitem name="Show Hide Sidebar" action="Show Hide Sidebar"/>70 <menuitem name="Show Hide Sidebar" action="Show Hide Sidebar"/>
134 <separator/>
135 <!--<menuitem name="ToolbarEditor" action="ToolbarEditor"/>-->
136</popup>71</popup>
13772
138<popup name="CompactMenu" accelerators="false">73<popup name="CompactMenu" accelerators="false">
@@ -141,13 +76,6 @@
141 <separator/>76 <separator/>
142 <menuitem name="Connect to Server" action="Connect to Server"/>77 <menuitem name="Connect to Server" action="Connect to Server"/>
143 <separator/>78 <separator/>
144 <!--
145 <menuitem name="Undo" action="Undo"/>
146 <menuitem name="Redo" action="Redo"/>
147 <separator/>
148 <menuitem name="Connect to Server" action="Connect to Server"/>
149 <separator/>
150 <menuitem name="Reset to Defaults" action="Reset to Defaults"/>-->
151 <menuitem name="About" action="About"/>79 <menuitem name="About" action="About"/>
152</popup>80</popup>
153</ui>81</ui>

Subscribers

People subscribed via source and target branches

to all changes: