Add Desktop in Places
Updated by Colin Walters <walters@verbum.org to monitor gconf and use g_get_user_special_dir. Signed-off-by: Adel Gadllah <adel.gadllah@gmail.com> Signed-off-by: Colin Walters <walters@verbum.org> https://bugzilla.gnome.org/show_bug.cgi?id=596933
This commit is contained in:
parent
6baafaa530
commit
c9d9846759
@ -14,6 +14,9 @@ const DND = imports.ui.dnd;
|
|||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const GenericDisplay = imports.ui.genericDisplay;
|
const GenericDisplay = imports.ui.genericDisplay;
|
||||||
|
|
||||||
|
const NAUTILUS_PREFS_DIR = '/apps/nautilus/preferences';
|
||||||
|
const DESKTOP_IS_HOME_KEY = NAUTILUS_PREFS_DIR + '/desktop_is_home_dir';
|
||||||
|
|
||||||
const PLACES_VSPACING = 8;
|
const PLACES_VSPACING = 8;
|
||||||
const PLACES_ICON_SIZE = 16;
|
const PLACES_ICON_SIZE = 16;
|
||||||
|
|
||||||
@ -99,6 +102,9 @@ Places.prototype = {
|
|||||||
spacing: PLACES_VSPACING });
|
spacing: PLACES_VSPACING });
|
||||||
this._rightBox.append(this._dirsBox, Big.BoxPackFlags.NONE);
|
this._rightBox.append(this._dirsBox, Big.BoxPackFlags.NONE);
|
||||||
|
|
||||||
|
let gconf = Shell.GConf.get_default();
|
||||||
|
gconf.watch_directory(NAUTILUS_PREFS_DIR);
|
||||||
|
|
||||||
let homeFile = Gio.file_new_for_path (GLib.get_home_dir());
|
let homeFile = Gio.file_new_for_path (GLib.get_home_dir());
|
||||||
let homeUri = homeFile.get_uri();
|
let homeUri = homeFile.get_uri();
|
||||||
let homeLabel = Shell.util_get_label_for_uri (homeUri);
|
let homeLabel = Shell.util_get_label_for_uri (homeUri);
|
||||||
@ -113,6 +119,22 @@ Places.prototype = {
|
|||||||
|
|
||||||
this._actionsBox.append(home.actor, Big.BoxPackFlags.NONE);
|
this._actionsBox.append(home.actor, Big.BoxPackFlags.NONE);
|
||||||
|
|
||||||
|
let desktopPath = GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_DESKTOP);
|
||||||
|
let desktopFile = Gio.file_new_for_path (desktopPath);
|
||||||
|
let desktopUri = desktopFile.get_uri();
|
||||||
|
let desktopLabel = Shell.util_get_label_for_uri (desktopUri);
|
||||||
|
let desktopIcon = Shell.util_get_icon_for_uri (desktopUri);
|
||||||
|
this._desktopMenu = new PlaceDisplay(desktopLabel,
|
||||||
|
function() {
|
||||||
|
return Shell.TextureCache.get_default().load_gicon(desktopIcon, PLACES_ICON_SIZE);
|
||||||
|
},
|
||||||
|
function() {
|
||||||
|
Gio.app_info_launch_default_for_uri(desktopUri, Main.createAppLaunchContext());
|
||||||
|
});
|
||||||
|
this._actionsBox.append(this._desktopMenu.actor, Big.BoxPackFlags.NONE);
|
||||||
|
this._updateDesktopMenuVisibility();
|
||||||
|
gconf.connect('changed::' + DESKTOP_IS_HOME_KEY, Lang.bind(this, this._updateDesktopMenuVisibility));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Show devices, code more or less ported from nautilus-places-sidebar.c
|
* Show devices, code more or less ported from nautilus-places-sidebar.c
|
||||||
*/
|
*/
|
||||||
@ -282,7 +304,15 @@ Places.prototype = {
|
|||||||
Gio.app_info_launch_default_for_uri(mountUri, Main.createAppLaunchContext());
|
Gio.app_info_launch_default_for_uri(mountUri, Main.createAppLaunchContext());
|
||||||
});
|
});
|
||||||
this._devBox.append(devItem.actor, Big.BoxPackFlags.NONE);
|
this._devBox.append(devItem.actor, Big.BoxPackFlags.NONE);
|
||||||
}
|
},
|
||||||
|
|
||||||
|
_updateDesktopMenuVisibility: function() {
|
||||||
|
let gconf = Shell.GConf.get_default();
|
||||||
|
let desktopIsHome = gconf.get_boolean(DESKTOP_IS_HOME_KEY);
|
||||||
|
if (desktopIsHome)
|
||||||
|
this._desktopMenu.actor.hide();
|
||||||
|
else
|
||||||
|
this._desktopMenu.actor.show();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
Signals.addSignalMethods(Places.prototype);
|
Signals.addSignalMethods(Places.prototype);
|
||||||
|
Loading…
Reference in New Issue
Block a user