905
904
# Expand the tree
906
905
self.treeview_left.expand_all()
908
def _load_right(self):
909
""" Load data into the right panel. (Filelist) """
911
# Model: [ icon, dir, name, status text, status, size (int), size (human), mtime (int), mtime (local), fileid ]
912
liststore = gtk.ListStore(gobject.TYPE_STRING,
913
gobject.TYPE_BOOLEAN,
926
# Fill the appropriate lists
927
dotted_files = self.pref.get_preference('dotted_files', 'bool')
928
for item in os.listdir(self.path):
929
if not dotted_files and item[0] == '.':
931
if os.path.isdir(self.path + os.sep + item):
936
if not self.notbranch:
937
branch = self.wt.branch
938
tree2 = self.wt.branch.repository.revision_tree(branch.last_revision())
940
delta = self.wt.changes_from(tree2, want_unchanged=True)
942
# Add'em to the ListStore
945
statinfo = os.stat(self.path + os.sep + item)
947
if e.errno in self.acceptable_errors:
951
liststore.append([ gtk.STOCK_DIRECTORY,
959
self._format_date(statinfo.st_mtime),
964
if not self.notbranch:
965
filename = self.wt.relpath(self.path + os.sep + item)
970
for rpath, rpathnew, id, kind, text_modified, meta_modified in delta.renamed:
971
if rpathnew == filename:
974
for rpath, id, kind in delta.added:
975
if rpath == filename:
978
for rpath, id, kind in delta.removed:
979
if rpath == filename:
982
for rpath, id, kind, text_modified, meta_modified in delta.modified:
983
if rpath == filename:
986
for rpath, id, kind in delta.unchanged:
987
if rpath == filename:
990
for rpath, file_class, kind, id, entry in self.wt.list_files():
991
if rpath == filename and file_class == 'I':
996
if status == 'renamed':
997
st = _i18n('renamed')
998
elif status == 'removed':
999
st = _i18n('removed')
1000
elif status == 'added':
1002
elif status == 'modified':
1003
st = _i18n('modified')
1004
elif status == 'unchanged':
1005
st = _i18n('unchanged')
1006
elif status == 'ignored':
1007
st = _i18n('ignored')
1009
st = _i18n('unknown')
1012
statinfo = os.stat(self.path + os.sep + item)
1014
if e.errno in self.acceptable_errors:
1018
liststore.append([gtk.STOCK_FILE,
1023
str(statinfo.st_size), # NOTE: if int used there it will fail for large files (size expressed as long int)
1024
self._format_size(statinfo.st_size),
1026
self._format_date(statinfo.st_mtime),
1029
# Create the columns and add them to the TreeView
1030
self.treeview_right.set_model(liststore)
1031
self._tvcolumn_filename = gtk.TreeViewColumn(_i18n('Filename'))
1032
self._tvcolumn_status = gtk.TreeViewColumn(_i18n('Status'))
1033
self._tvcolumn_size = gtk.TreeViewColumn(_i18n('Size'))
1034
self._tvcolumn_mtime = gtk.TreeViewColumn(_i18n('Last modified'))
1035
self.treeview_right.append_column(self._tvcolumn_filename)
1036
self.treeview_right.append_column(self._tvcolumn_status)
1037
self.treeview_right.append_column(self._tvcolumn_size)
1038
self.treeview_right.append_column(self._tvcolumn_mtime)
1041
cellpb = gtk.CellRendererPixbuf()
1042
cell = gtk.CellRendererText()
1043
self._tvcolumn_filename.pack_start(cellpb, False)
1044
self._tvcolumn_filename.pack_start(cell, True)
1045
self._tvcolumn_filename.set_attributes(cellpb, stock_id=0)
1046
self._tvcolumn_filename.add_attribute(cell, 'text', 2)
1047
self._tvcolumn_status.pack_start(cell, True)
1048
self._tvcolumn_status.add_attribute(cell, 'text', 3)
1049
self._tvcolumn_size.pack_start(cell, True)
1050
self._tvcolumn_size.add_attribute(cell, 'text', 6)
1051
self._tvcolumn_mtime.pack_start(cell, True)
1052
self._tvcolumn_mtime.add_attribute(cell, 'text', 8)
1054
# Set up the properties of the TreeView
1055
self.treeview_right.set_headers_visible(True)
1056
self.treeview_right.set_headers_clickable(True)
1057
self.treeview_right.set_search_column(1)
1058
self._tvcolumn_filename.set_resizable(True)
1059
self._tvcolumn_status.set_resizable(True)
1060
self._tvcolumn_size.set_resizable(True)
1061
self._tvcolumn_mtime.set_resizable(True)
1063
liststore.set_sort_func(13, self._sort_filelist_callback, None)
1064
liststore.set_sort_column_id(13, gtk.SORT_ASCENDING)
1065
self._tvcolumn_filename.set_sort_column_id(13)
1066
self._tvcolumn_status.set_sort_column_id(3)
1067
self._tvcolumn_size.set_sort_column_id(5)
1068
self._tvcolumn_mtime.set_sort_column_id(7)
1071
self.set_sensitivity()
1073
907
def get_selected_fileid(self):
1074
908
""" Get the file_id of the selected file. """
1075
treeselection = self.treeview_right.get_selection()
909
treeselection = self.window.treeview_right.get_selection()
1076
910
(model, iter) = treeselection.get_selected()
1078
912
if iter is None:
1203
liststore.append([gtk.STOCK_DIRECTORY,
1211
self._format_date(statinfo.st_mtime),
1047
liststore.append([ gtk.STOCK_DIRECTORY,
1055
self._format_date(statinfo.st_mtime),
1213
1057
for item in files:
1216
1061
if not notbranch:
1217
filename = tree1.relpath(path + os.sep + item)
1062
filename = tree1.relpath(os.path.join(os.path.realpath(path), item))
1222
for rpath, rpathnew, id, kind, text_modified, meta_modified in delta.renamed:
1223
if rpathnew == filename:
1226
for rpath, id, kind in delta.added:
1227
if rpath == filename:
1230
for rpath, id, kind in delta.removed:
1231
if rpath == filename:
1234
for rpath, id, kind, text_modified, meta_modified in delta.modified:
1235
if rpath == filename:
1238
for rpath, id, kind in delta.unchanged:
1239
if rpath == filename:
1240
status = 'unchanged'
1242
for rpath, file_class, kind, id, entry in self.wt.list_files():
1243
if rpath == filename and file_class == 'I':
1248
if status == 'renamed':
1249
st = _i18n('renamed')
1250
elif status == 'removed':
1251
st = _i18n('removed')
1252
elif status == 'added':
1254
elif status == 'modified':
1255
st = _i18n('modified')
1256
elif status == 'unchanged':
1257
st = _i18n('unchanged')
1258
elif status == 'ignored':
1259
st = _i18n('ignored')
1260
if not ignored_files:
1064
st, status = self.statusmapper(filename, delta)
1065
if not ignored_files and status == 'ignored':
1263
st = _i18n('unknown')
1266
1069
statinfo = os.stat(self.path + os.sep + item)
1360
1163
self.image_location_error.destroy()
1362
1165
# Columns should auto-size
1363
self.treeview_right.columns_autosize()
1166
self.window.treeview_right.columns_autosize()
1365
1168
# Set sensitivity
1366
1169
self.set_sensitivity()
1171
def statusmapper(self, filename, delta):
1176
for rpath, rpathnew, id, kind, text_modified, meta_modified in delta.renamed:
1177
if rpathnew == filename:
1180
for rpath, id, kind in delta.added:
1181
if rpath == filename:
1184
for rpath, id, kind in delta.removed:
1185
if rpath == filename:
1188
for rpath, id, kind, text_modified, meta_modified in delta.modified:
1189
if rpath == filename:
1192
for rpath, id, kind in delta.unchanged:
1193
if rpath == filename:
1194
status = 'unchanged'
1196
for rpath, file_class, kind, id, entry in self.wt.list_files():
1197
if rpath == filename and file_class == 'I':
1202
if status == 'renamed':
1203
st = _i18n('renamed')
1204
elif status == 'removed':
1205
st = _i18n('removed')
1206
elif status == 'added':
1208
elif status == 'modified':
1209
st = _i18n('modified')
1210
elif status == 'unchanged':
1211
st = _i18n('unchanged')
1212
elif status == 'ignored':
1213
st = _i18n('ignored')
1215
st = _i18n('unknown')
1368
1218
def _harddisks(self):
1369
1219
""" Returns hard drive letters under Win32. """