17
16
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18
17
# Boston, MA 02111-1307, USA.
24
23
from gtk import gdk
29
25
from awn.extras import _
30
26
from desktopagnostic.config import GROUP_DEFAULT
27
from desktopagnostic import fdo, vfs
32
32
from stacks_vfs import VfsUri, Monitor
33
33
from stacks_icons import IconFactory, Thumbnailer
102
102
def _file_sort(self, model, iter1, iter2):
103
103
t1 = model.get_value(iter1, COL_TYPE)
104
104
t2 = model.get_value(iter2, COL_TYPE)
105
if self.applet.config['sort_folders_before_files'] and t1 == gnomevfs.FILE_TYPE_DIRECTORY and not \
106
t2 == gnomevfs.FILE_TYPE_DIRECTORY:
105
if self.applet.config['sort_folders_before_files'] and t1 == gio.FILE_TYPE_DIRECTORY and not \
106
t2 == gio.FILE_TYPE_DIRECTORY:
108
elif self.applet.config['sort_folders_before_files'] and t2 == gnomevfs.FILE_TYPE_DIRECTORY and not \
109
t1 == gnomevfs.FILE_TYPE_DIRECTORY:
108
elif self.applet.config['sort_folders_before_files'] and t2 == gio.FILE_TYPE_DIRECTORY and not \
109
t1 == gio.FILE_TYPE_DIRECTORY:
112
112
n1 = model.get_value(iter1, COL_LABEL)
119
119
return cmp(n2, n1)
122
121
# this sort function sorts:
123
122
# -directories first
125
124
def _file_sort_date(self, model, iter1, iter2):
126
125
t1 = model.get_value(iter1, COL_TYPE)
127
126
t2 = model.get_value(iter2, COL_TYPE)
128
if self.applet.config['sort_folders_before_files'] and t1 == gnomevfs.FILE_TYPE_DIRECTORY and not \
129
t2 == gnomevfs.FILE_TYPE_DIRECTORY:
127
if self.applet.config['sort_folders_before_files'] and t1 == gio.FILE_TYPE_DIRECTORY and not \
128
t2 == gio.FILE_TYPE_DIRECTORY:
131
elif self.applet.config['sort_folders_before_files'] and t2 == gnomevfs.FILE_TYPE_DIRECTORY and not \
132
t1 == gnomevfs.FILE_TYPE_DIRECTORY:
130
elif self.applet.config['sort_folders_before_files'] and t2 == gio.FILE_TYPE_DIRECTORY and not \
131
t1 == gio.FILE_TYPE_DIRECTORY:
135
u1 = model.get_value(iter1, COL_URI)
136
u2 = model.get_value(iter2, COL_URI)
137
i1 = gnomevfs.get_file_info(
139
gnomevfs.FILE_INFO_DEFAULT |
140
gnomevfs.FILE_INFO_FOLLOW_LINKS )
142
i2 = gnomevfs.get_file_info(
144
gnomevfs.FILE_INFO_DEFAULT |
145
gnomevfs.FILE_INFO_FOLLOW_LINKS )
134
u1 = model.get_value(iter1, COL_URI)
135
u2 = model.get_value(iter2, COL_URI)
136
i1 = u1.uri.query_info(gio.FILE_ATTRIBUTE_TIME_MODIFIED, 0)
137
c1 = i1.get_modification_time()
138
i2 = u2.uri.query_info(gio.FILE_ATTRIBUTE_TIME_MODIFIED, 0)
139
c2 = i2.get_modification_time()
148
if self.applet.config['sort_direction'] == BACKEND_SORT_ASCENDING:
141
if self.applet.config['sort_direction'] == BACKEND_SORT_ASCENDING:
153
146
# emits attention signal
154
147
def _get_attention(self):
155
148
self.emit("attention", self.get_type())
158
150
def _created_cb(self, widget, vfs_uri):
159
151
assert isinstance(vfs_uri, VfsUri)
160
152
if self.add([vfs_uri]):
161
153
self._get_attention()
164
def _deleted_cb(self, widget, vfs_uri):
156
def _deleted_cb(self, monitor, vfs_uri, is_dir_monitor=None):
165
157
assert isinstance(vfs_uri, VfsUri)
158
if not is_dir_monitor:
166
160
if self.remove([vfs_uri]):
167
161
self._get_attention()
200
192
# check for desktop item
201
193
if name.endswith(".desktop"):
202
item = gnomedesktop.item_new_from_uri(
203
path, gnomedesktop.LOAD_ONLY_IF_EXISTS)
194
file = vfs.File.for_uri(path)
196
if file is None or not file.exists():
206
command = item.get_string(gnomedesktop.KEY_EXEC)
207
name = item.get_localestring(gnomedesktop.KEY_NAME)
208
mime_type = item.get_localestring(gnomedesktop.KEY_MIME_TYPE)
209
type = gnomevfs.FILE_TYPE_REGULAR
210
icon_name = item.get_localestring(gnomedesktop.KEY_ICON)
199
entry = fdo.DesktopEntry.for_file (file)
201
name = entry.get_name()
202
icon_name = entry.get_icon() or "image-missing"
204
type = gio.FILE_TYPE_REGULAR
213
icon_uri = gnomedesktop.find_icon(
214
gtk.icon_theme_get_default(),
207
icon_info = gtk.icon_theme_get_default().lookup_icon(icon_name, self.icon_size, 0)
208
icon_uri = icon_info.get_filename() if icon_info else path
220
209
pixbuf = IconFactory().load_icon(icon_uri, self.icon_size)
222
pixbuf.add_alpha (True, '\0', '\0', '\0')
211
pixbuf.add_alpha (True, '\0', '\0', '\0')
226
fileinfo = gnomevfs.get_file_info(
228
gnomevfs.FILE_INFO_DEFAULT |
229
gnomevfs.FILE_INFO_GET_MIME_TYPE |
230
gnomevfs.FILE_INFO_FORCE_SLOW_MIME_TYPE |
231
gnomevfs.FILE_INFO_FOLLOW_LINKS )
233
mime_type = fileinfo.mime_type
234
except gnomevfs.NotFoundError:
215
fileinfo = uri.query_info(','.join([
216
gio.FILE_ATTRIBUTE_STANDARD_TYPE,
217
gio.FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
218
gio.FILE_ATTRIBUTE_STANDARD_IS_HIDDEN,
219
gio.FILE_ATTRIBUTE_STANDARD_IS_BACKUP]))
220
if fileinfo.get_is_hidden() or fileinfo.get_is_backup():
222
type = fileinfo.get_file_type()
223
mime_type = fileinfo.get_content_type()
236
226
# get pixbuf for icon
237
227
pixbuf = Thumbnailer(path, mime_type).get_icon(self.icon_size)
239
229
pixbuf.add_alpha (True, '\0', '\0', '\0')
243
233
monitor = Monitor(vfs_uri)
244
234
monitor.connect("deleted", self._deleted_cb)
245
except gnomevfs.NotSupportedError:
251
239
iter = self.store.append([vfs_uri, monitor, type, name, mime_type, pixbuf, None])
253
241
if self.store.iter_is_valid(iter):
254
242
self.emit("item-created", iter)
256
244
print "ERROR in STACK: iter is NOK (stacks_backend.py)"
259
246
# return pixbuf later?
260
if pixbuf: retval = pixbuf
264
250
# restructure of dialog needed
265
251
return (retval is not None)
268
253
# remove file from store
269
254
def remove(self, vfs_uris):