mirror of
https://github.com/gryf/pygtktalog.git
synced 2025-12-17 11:30:19 +01:00
* Clean up TreeStore model for files.
* Added observer variable to main model, so that clicked file id in search window can be easly passed to main controller and jump to that file. * Some cosmetic changes.
This commit is contained in:
@@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
__version__ = "0.8"
|
__version__ = "1.0 RC1"
|
||||||
LICENCE = \
|
LICENCE = \
|
||||||
"""
|
"""
|
||||||
GPL v2
|
GPL v2
|
||||||
@@ -37,6 +37,9 @@ from gtkmvc import Controller
|
|||||||
from c_config import ConfigController
|
from c_config import ConfigController
|
||||||
from views.v_config import ConfigView
|
from views.v_config import ConfigView
|
||||||
|
|
||||||
|
from c_search import SearchController
|
||||||
|
from views.v_search import SearchView
|
||||||
|
|
||||||
import views.v_dialogs as Dialogs
|
import views.v_dialogs as Dialogs
|
||||||
|
|
||||||
from views.v_image import ImageView
|
from views.v_image import ImageView
|
||||||
@@ -124,7 +127,6 @@ class MainController(Controller):
|
|||||||
# generate recent menu
|
# generate recent menu
|
||||||
self.__generate_recent_menu()
|
self.__generate_recent_menu()
|
||||||
|
|
||||||
|
|
||||||
self.view['tag_cloud_textview'].connect("populate-popup",
|
self.view['tag_cloud_textview'].connect("populate-popup",
|
||||||
self.on_tag_cloud_textview_popup)
|
self.on_tag_cloud_textview_popup)
|
||||||
# in case model has opened file, register tags
|
# in case model has opened file, register tags
|
||||||
@@ -181,6 +183,8 @@ class MainController(Controller):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
def on_tag_cloud_textview_event_after(self, textview, event):
|
def on_tag_cloud_textview_event_after(self, textview, event):
|
||||||
|
"""check, if and what tag user clicked. generate apropriate output
|
||||||
|
in files treview"""
|
||||||
if event.type != gtk.gdk.BUTTON_RELEASE:
|
if event.type != gtk.gdk.BUTTON_RELEASE:
|
||||||
return False
|
return False
|
||||||
if event.button != 1:
|
if event.button != 1:
|
||||||
@@ -222,6 +226,7 @@ class MainController(Controller):
|
|||||||
self.view['tag_path'].set_text(txt + ", " +tag1)
|
self.view['tag_path'].set_text(txt + ", " +tag1)
|
||||||
self.__tag_cloud()
|
self.__tag_cloud()
|
||||||
self.model.get_root_entries()
|
self.model.get_root_entries()
|
||||||
|
self.__set_files_hiden_columns_visible(True)
|
||||||
self.view['files'].set_model(self.model.files_list)
|
self.view['files'].set_model(self.model.files_list)
|
||||||
self.__hide_details()
|
self.__hide_details()
|
||||||
|
|
||||||
@@ -409,6 +414,7 @@ class MainController(Controller):
|
|||||||
self.view['tag_path_box'].hide()
|
self.view['tag_path_box'].hide()
|
||||||
self.model.selected_tags = []
|
self.model.selected_tags = []
|
||||||
self.model.refresh_discs_tree()
|
self.model.refresh_discs_tree()
|
||||||
|
self.__set_files_hiden_columns_visible(False)
|
||||||
|
|
||||||
# cleanup files and detiles
|
# cleanup files and detiles
|
||||||
try:
|
try:
|
||||||
@@ -464,7 +470,6 @@ class MainController(Controller):
|
|||||||
textview.get_window(gtk.TEXT_WINDOW_TEXT).\
|
textview.get_window(gtk.TEXT_WINDOW_TEXT).\
|
||||||
set_cursor(gtk.gdk.Cursor(gtk.gdk.LEFT_PTR))
|
set_cursor(gtk.gdk.Cursor(gtk.gdk.LEFT_PTR))
|
||||||
|
|
||||||
|
|
||||||
def on_tag_cloud_click(self, tag, textview, event, b_iter, data):
|
def on_tag_cloud_click(self, tag, textview, event, b_iter, data):
|
||||||
"""react on click on connected tag items"""
|
"""react on click on connected tag items"""
|
||||||
tag_cloud = self.view['tag_cloud_textview']
|
tag_cloud = self.view['tag_cloud_textview']
|
||||||
@@ -487,18 +492,8 @@ class MainController(Controller):
|
|||||||
self.view['tag_path'].set_text(txt + ", " +tag1)
|
self.view['tag_path'].set_text(txt + ", " +tag1)
|
||||||
self.__tag_cloud()
|
self.__tag_cloud()
|
||||||
|
|
||||||
|
|
||||||
#elif event.type == gtk.gdk.MOTION_NOTIFY:
|
|
||||||
# window = tag_cloud.get_window(gtk.TEXT_WINDOW_TEXT)
|
|
||||||
# if window:
|
|
||||||
# window.set_cursor(gtk.gdk.Cursor(gtk.gdk.HAND2))
|
|
||||||
#else:
|
|
||||||
# window = tag_cloud.get_window(gtk.TEXT_WINDOW_TEXT)
|
|
||||||
# if window:
|
|
||||||
# window.set_cursor(None)
|
|
||||||
|
|
||||||
# NOTE: quit / close window
|
|
||||||
def on_main_destroy_event(self, window, event):
|
def on_main_destroy_event(self, window, event):
|
||||||
|
"""NOTE: quit / close window signal"""
|
||||||
self.on_quit_activate(window)
|
self.on_quit_activate(window)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@@ -688,6 +683,7 @@ class MainController(Controller):
|
|||||||
if path:
|
if path:
|
||||||
iter = self.model.discs_tree.get_iter(path)
|
iter = self.model.discs_tree.get_iter(path)
|
||||||
id = self.model.discs_tree.get_value(iter, 0)
|
id = self.model.discs_tree.get_value(iter, 0)
|
||||||
|
self.__set_files_hiden_columns_visible(False)
|
||||||
self.model.get_root_entries(id)
|
self.model.get_root_entries(id)
|
||||||
self.__get_item_info(id)
|
self.__get_item_info(id)
|
||||||
|
|
||||||
@@ -700,7 +696,7 @@ class MainController(Controller):
|
|||||||
else:
|
else:
|
||||||
treeview.expand_row(path, False)
|
treeview.expand_row(path, False)
|
||||||
return
|
return
|
||||||
|
|
||||||
def on_discs_key_release_event(self, treeview, event):
|
def on_discs_key_release_event(self, treeview, event):
|
||||||
if gtk.gdk.keyval_name(event.keyval) == 'Menu':
|
if gtk.gdk.keyval_name(event.keyval) == 'Menu':
|
||||||
ids = self.__get_tv_selection_ids(treeview)
|
ids = self.__get_tv_selection_ids(treeview)
|
||||||
@@ -710,13 +706,13 @@ class MainController(Controller):
|
|||||||
self.__popup_menu(event, 'discs_popup')
|
self.__popup_menu(event, 'discs_popup')
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def on_images_key_release_event(self, iconview, event):
|
def on_images_key_release_event(self, iconview, event):
|
||||||
if gtk.gdk.keyval_name(event.keyval) == 'Menu':
|
if gtk.gdk.keyval_name(event.keyval) == 'Menu':
|
||||||
self.__popup_menu(event, 'img_popup')
|
self.__popup_menu(event, 'img_popup')
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def on_images_button_press_event(self, iconview, event):
|
def on_images_button_press_event(self, iconview, event):
|
||||||
#try:
|
#try:
|
||||||
# path_and_cell = iconview.get_item_at_pos(int(event.x),
|
# path_and_cell = iconview.get_item_at_pos(int(event.x),
|
||||||
@@ -741,13 +737,13 @@ class MainController(Controller):
|
|||||||
Dialogs.Inf("Delete images", "No images selected",
|
Dialogs.Inf("Delete images", "No images selected",
|
||||||
"You have to select at least one image to delete.")
|
"You have to select at least one image to delete.")
|
||||||
return
|
return
|
||||||
|
|
||||||
if self.model.config.confd['delwarn']:
|
if self.model.config.confd['delwarn']:
|
||||||
obj = Dialogs.Qst('Delete images', 'Delete selected images?',
|
obj = Dialogs.Qst('Delete images', 'Delete selected images?',
|
||||||
'Selected images will be permanently removed from catalog.')
|
'Selected images will be permanently removed from catalog.')
|
||||||
if not obj.run():
|
if not obj.run():
|
||||||
return
|
return
|
||||||
|
|
||||||
model = self.view['images'].get_model()
|
model = self.view['images'].get_model()
|
||||||
for path in list_of_paths:
|
for path in list_of_paths:
|
||||||
iter = model.get_iter(path)
|
iter = model.get_iter(path)
|
||||||
@@ -778,7 +774,7 @@ class MainController(Controller):
|
|||||||
|
|
||||||
list_of_paths = self.view['images'].get_selected_items()
|
list_of_paths = self.view['images'].get_selected_items()
|
||||||
model = self.view['images'].get_model()
|
model = self.view['images'].get_model()
|
||||||
|
|
||||||
count = 0
|
count = 0
|
||||||
|
|
||||||
if len(list_of_paths) == 0:
|
if len(list_of_paths) == 0:
|
||||||
@@ -808,12 +804,12 @@ class MainController(Controller):
|
|||||||
def on_img_delete2_activate(self, menu_item):
|
def on_img_delete2_activate(self, menu_item):
|
||||||
"""remove images, but keep thumbnails"""
|
"""remove images, but keep thumbnails"""
|
||||||
list_of_paths = self.view['images'].get_selected_items()
|
list_of_paths = self.view['images'].get_selected_items()
|
||||||
|
|
||||||
if not list_of_paths:
|
if not list_of_paths:
|
||||||
Dialogs.Inf("Delete images", "No images selected",
|
Dialogs.Inf("Delete images", "No images selected",
|
||||||
"You have to select at least one image to delete.")
|
"You have to select at least one image to delete.")
|
||||||
return
|
return
|
||||||
|
|
||||||
if self.model.config.confd['delwarn']:
|
if self.model.config.confd['delwarn']:
|
||||||
obj = Dialogs.Qst('Delete images', 'Delete selected images?',
|
obj = Dialogs.Qst('Delete images', 'Delete selected images?',
|
||||||
'Selected images will be permanently removed from ' + \
|
'Selected images will be permanently removed from ' + \
|
||||||
@@ -871,13 +867,13 @@ class MainController(Controller):
|
|||||||
menu_items = ['update1','rename1','delete2', 'statistics1']
|
menu_items = ['update1','rename1','delete2', 'statistics1']
|
||||||
for menu_item in menu_items:
|
for menu_item in menu_items:
|
||||||
self.view[menu_item].set_sensitive(not not ids)
|
self.view[menu_item].set_sensitive(not not ids)
|
||||||
|
|
||||||
# checkout, if we dealing with disc or directory
|
# checkout, if we dealing with disc or directory
|
||||||
# if ancestor is 'root', then activate "update" menu item
|
# if ancestor is 'root', then activate "update" menu item
|
||||||
treeiter = self.model.discs_tree.get_iter(path)
|
treeiter = self.model.discs_tree.get_iter(path)
|
||||||
ancestor = self.model.discs_tree.get_value(treeiter, 3) == 1
|
ancestor = self.model.discs_tree.get_value(treeiter, 3) == 1
|
||||||
self.view['update1'].set_sensitive(ancestor)
|
self.view['update1'].set_sensitive(ancestor)
|
||||||
|
|
||||||
self.__popup_menu(event)
|
self.__popup_menu(event)
|
||||||
|
|
||||||
def on_expand_all1_activate(self, menu_item):
|
def on_expand_all1_activate(self, menu_item):
|
||||||
@@ -917,8 +913,6 @@ class MainController(Controller):
|
|||||||
self.view['edit2'].set_sensitive(True)
|
self.view['edit2'].set_sensitive(True)
|
||||||
self.__popup_menu(event, 'files_popup')
|
self.__popup_menu(event, 'files_popup')
|
||||||
return True
|
return True
|
||||||
#if event.button == 1:
|
|
||||||
# return False
|
|
||||||
|
|
||||||
def on_files_cursor_changed(self, treeview):
|
def on_files_cursor_changed(self, treeview):
|
||||||
"""Show details of selected file/directory"""
|
"""Show details of selected file/directory"""
|
||||||
@@ -937,7 +931,7 @@ class MainController(Controller):
|
|||||||
except TypeError:
|
except TypeError:
|
||||||
return
|
return
|
||||||
self.__popup_menu(event, 'files_popup')
|
self.__popup_menu(event, 'files_popup')
|
||||||
|
|
||||||
if gtk.gdk.keyval_name(event.keyval) == 'BackSpace':
|
if gtk.gdk.keyval_name(event.keyval) == 'BackSpace':
|
||||||
d_path, d_column = self.view['discs'].get_cursor()
|
d_path, d_column = self.view['discs'].get_cursor()
|
||||||
if d_path and d_column:
|
if d_path and d_column:
|
||||||
@@ -953,11 +947,12 @@ class MainController(Controller):
|
|||||||
first_iter = f_model.get_iter_first()
|
first_iter = f_model.get_iter_first()
|
||||||
first_child_value = f_model.get_value(first_iter, 0)
|
first_child_value = f_model.get_value(first_iter, 0)
|
||||||
# get two steps up
|
# get two steps up
|
||||||
val = self.model.get_parent_discs_value(first_child_value)
|
val = self.model.get_parent_id(first_child_value)
|
||||||
parent_value = self.model.get_parent_discs_value(val)
|
parent_value = self.model.get_parent_id(val)
|
||||||
iter = self.model.discs_tree.get_iter_first()
|
iter = self.model.discs_tree.get_iter_first()
|
||||||
while iter:
|
while iter:
|
||||||
current_value = self.model.discs_tree.get_value(iter, 0)
|
current_value = self.model.discs_tree.get_value(iter,
|
||||||
|
0)
|
||||||
if current_value == parent_value:
|
if current_value == parent_value:
|
||||||
path = self.model.discs_tree.get_path(iter)
|
path = self.model.discs_tree.get_path(iter)
|
||||||
self.view['discs'].set_cursor(path)
|
self.view['discs'].set_cursor(path)
|
||||||
@@ -976,8 +971,9 @@ class MainController(Controller):
|
|||||||
f_iter = self.model.files_list.get_iter(row)
|
f_iter = self.model.files_list.get_iter(row)
|
||||||
current_id = self.model.files_list.get_value(f_iter, 0)
|
current_id = self.model.files_list.get_value(f_iter, 0)
|
||||||
|
|
||||||
if self.model.files_list.get_value(f_iter,4) == 1:
|
if self.model.files_list.get_value(f_iter, 6) == 1:
|
||||||
# ONLY directories. files are omitted.
|
# ONLY directories. files are omitted.
|
||||||
|
self.__set_files_hiden_columns_visible(False)
|
||||||
self.model.get_root_entries(current_id)
|
self.model.get_root_entries(current_id)
|
||||||
|
|
||||||
d_path, d_column = self.view['discs'].get_cursor()
|
d_path, d_column = self.view['discs'].get_cursor()
|
||||||
@@ -985,15 +981,16 @@ class MainController(Controller):
|
|||||||
if not self.view['discs'].row_expanded(d_path):
|
if not self.view['discs'].row_expanded(d_path):
|
||||||
self.view['discs'].expand_row(d_path, False)
|
self.view['discs'].expand_row(d_path, False)
|
||||||
|
|
||||||
iter = self.model.discs_tree.get_iter(d_path)
|
discs_model = self.model.discs_tree
|
||||||
new_iter = self.model.discs_tree.iter_children(iter)
|
iterator = discs_model.get_iter(d_path)
|
||||||
|
new_iter = discs_model.iter_children(iterator)
|
||||||
if new_iter:
|
if new_iter:
|
||||||
while new_iter:
|
while new_iter:
|
||||||
current_value = self.model.discs_tree.get_value(new_iter, 0)
|
current_value = discs_model.get_value(new_iter, 0)
|
||||||
if current_value == current_id:
|
if current_value == current_id:
|
||||||
path = self.model.discs_tree.get_path(new_iter)
|
path = discs_model.get_path(new_iter)
|
||||||
self.view['discs'].set_cursor(path)
|
self.view['discs'].set_cursor(path)
|
||||||
new_iter = self.model.discs_tree.iter_next(new_iter)
|
new_iter = discs_model.iter_next(new_iter)
|
||||||
return
|
return
|
||||||
|
|
||||||
def on_cancel_clicked(self, widget):
|
def on_cancel_clicked(self, widget):
|
||||||
@@ -1003,7 +1000,10 @@ class MainController(Controller):
|
|||||||
return
|
return
|
||||||
|
|
||||||
def on_find_activate(self, widget):
|
def on_find_activate(self, widget):
|
||||||
# TODO: implement searcher
|
"""search button/menu activated. Show search window"""
|
||||||
|
if not self.model.search_created:
|
||||||
|
c = SearchController(self.model)
|
||||||
|
v = SearchView(c)
|
||||||
return
|
return
|
||||||
|
|
||||||
# NOTE: recent signal
|
# NOTE: recent signal
|
||||||
@@ -1014,7 +1014,7 @@ class MainController(Controller):
|
|||||||
# NOTE: add tags / images
|
# NOTE: add tags / images
|
||||||
def on_delete_tag2_activate(self, menu_item):
|
def on_delete_tag2_activate(self, menu_item):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def on_delete_tag_activate(self, menu_item):
|
def on_delete_tag_activate(self, menu_item):
|
||||||
ids = self.__get_tv_selection_ids(self.view['files'])
|
ids = self.__get_tv_selection_ids(self.view['files'])
|
||||||
if not ids:
|
if not ids:
|
||||||
@@ -1115,20 +1115,20 @@ class MainController(Controller):
|
|||||||
self.on_delete2_activate(menu_item)
|
self.on_delete2_activate(menu_item)
|
||||||
if self.view['images'].is_focus():
|
if self.view['images'].is_focus():
|
||||||
self.on_img_delete_activate(menu_item)
|
self.on_img_delete_activate(menu_item)
|
||||||
|
|
||||||
def on_delete2_activate(self, menu_item):
|
def on_delete2_activate(self, menu_item):
|
||||||
try:
|
try:
|
||||||
selection = self.view['discs'].get_selection()
|
selection = self.view['discs'].get_selection()
|
||||||
model, selected_iter = selection.get_selected()
|
model, selected_iter = selection.get_selected()
|
||||||
except:
|
except:
|
||||||
return
|
return
|
||||||
|
|
||||||
if not selected_iter:
|
if not selected_iter:
|
||||||
Dialogs.Inf("Delete disc", "No disc selected",
|
Dialogs.Inf("Delete disc", "No disc selected",
|
||||||
"You have to select disc first before you " +\
|
"You have to select disc first before you " +\
|
||||||
"can delete it")
|
"can delete it")
|
||||||
return
|
return
|
||||||
|
|
||||||
if self.model.config.confd['delwarn']:
|
if self.model.config.confd['delwarn']:
|
||||||
name = model.get_value(selected_iter, 1)
|
name = model.get_value(selected_iter, 1)
|
||||||
obj = Dialogs.Qst('Delete %s' % name, 'Delete %s?' % name,
|
obj = Dialogs.Qst('Delete %s' % name, 'Delete %s?' % name,
|
||||||
@@ -1172,12 +1172,12 @@ class MainController(Controller):
|
|||||||
model, list_of_paths = selection.get_selected_rows()
|
model, list_of_paths = selection.get_selected_rows()
|
||||||
except TypeError:
|
except TypeError:
|
||||||
return
|
return
|
||||||
|
|
||||||
if not list_of_paths:
|
if not list_of_paths:
|
||||||
Dialogs.Inf("Delete files", "No files selected",
|
Dialogs.Inf("Delete files", "No files selected",
|
||||||
"You have to select at least one file to delete.")
|
"You have to select at least one file to delete.")
|
||||||
return
|
return
|
||||||
|
|
||||||
if self.model.config.confd['delwarn']:
|
if self.model.config.confd['delwarn']:
|
||||||
obj = Dialogs.Qst("Delete files", "Delete files?",
|
obj = Dialogs.Qst("Delete files", "Delete files?",
|
||||||
"Selected files and directories will be" + \
|
"Selected files and directories will be" + \
|
||||||
@@ -1239,7 +1239,7 @@ class MainController(Controller):
|
|||||||
self.model.unsaved_project = True
|
self.model.unsaved_project = True
|
||||||
self.__set_title(filepath=self.model.filename, modified=True)
|
self.__set_title(filepath=self.model.filename, modified=True)
|
||||||
return
|
return
|
||||||
|
|
||||||
def on_edit1_activate(self, menu_item):
|
def on_edit1_activate(self, menu_item):
|
||||||
"""Make sufficient menu items sensitive in right cases"""
|
"""Make sufficient menu items sensitive in right cases"""
|
||||||
# TODO: consolidate popup-menus with edit menu
|
# TODO: consolidate popup-menus with edit menu
|
||||||
@@ -1247,7 +1247,7 @@ class MainController(Controller):
|
|||||||
self.view['delete1'].set_sensitive(False)
|
self.view['delete1'].set_sensitive(False)
|
||||||
else:
|
else:
|
||||||
self.view['delete1'].set_sensitive(True)
|
self.view['delete1'].set_sensitive(True)
|
||||||
|
|
||||||
def on_debugbtn_clicked(self, widget):
|
def on_debugbtn_clicked(self, widget):
|
||||||
"""Debug. To remove in stable version, including button in GUI"""
|
"""Debug. To remove in stable version, including button in GUI"""
|
||||||
if __debug__:
|
if __debug__:
|
||||||
@@ -1263,10 +1263,45 @@ class MainController(Controller):
|
|||||||
print "files have focus", self.view['files'].is_focus()
|
print "files have focus", self.view['files'].is_focus()
|
||||||
print "discs have focus", self.view['discs'].is_focus()
|
print "discs have focus", self.view['discs'].is_focus()
|
||||||
print "images have focus", self.view['images'].is_focus()
|
print "images have focus", self.view['images'].is_focus()
|
||||||
|
c = self.view['files'].get_column(0)
|
||||||
|
c.set_visible(not c.get_visible())
|
||||||
|
c = self.view['files'].get_column(2)
|
||||||
|
c.set_visible(not c.get_visible())
|
||||||
|
|
||||||
#####################
|
#####################
|
||||||
# observed properetis
|
# observed properetis
|
||||||
|
def property_point_value_change(self, model, old, new):
|
||||||
|
"""File was activated in search window through the observable
|
||||||
|
property - select it on the discs and files treeview, and get
|
||||||
|
file description"""
|
||||||
|
|
||||||
|
if new:
|
||||||
|
discs_tree = self.view['discs']
|
||||||
|
discs_model = discs_tree.get_model()
|
||||||
|
parent_id = self.model.get_parent_id(new)
|
||||||
|
|
||||||
|
def foreach_disctree(model, path, iterator, data):
|
||||||
|
"""find path in model to desired value"""
|
||||||
|
if model.get_value(iterator, 0) == data:
|
||||||
|
discs_tree.expand_to_path(path)
|
||||||
|
discs_tree.set_cursor(path)
|
||||||
|
return False
|
||||||
|
|
||||||
|
discs_model.foreach(foreach_disctree, parent_id)
|
||||||
|
|
||||||
|
files_list = self.view['files']
|
||||||
|
files_model = files_list.get_model()
|
||||||
|
|
||||||
|
def foreach_fileslist(model, path, iterator, data):
|
||||||
|
"""find path in model to desired value"""
|
||||||
|
if model.get_value(iterator, 0) == data:
|
||||||
|
files_list.set_cursor(path)
|
||||||
|
self.__get_item_info(data)
|
||||||
|
return False
|
||||||
|
|
||||||
|
files_model.foreach(foreach_fileslist, new)
|
||||||
|
return
|
||||||
|
|
||||||
def property_statusmsg_value_change(self, model, old, new):
|
def property_statusmsg_value_change(self, model, old, new):
|
||||||
if self.statusbar_id:
|
if self.statusbar_id:
|
||||||
self.view['mainStatus'].remove(self.context_id, self.statusbar_id)
|
self.view['mainStatus'].remove(self.context_id, self.statusbar_id)
|
||||||
@@ -1307,6 +1342,11 @@ class MainController(Controller):
|
|||||||
|
|
||||||
#########################
|
#########################
|
||||||
# private class functions
|
# private class functions
|
||||||
|
def __set_files_hiden_columns_visible(self, boolean):
|
||||||
|
"""switch visibility of default hidden columns in files treeview"""
|
||||||
|
self.view['files'].get_column(0).set_visible(boolean)
|
||||||
|
self.view['files'].get_column(2).set_visible(boolean)
|
||||||
|
|
||||||
def __get_tv_selection_ids(self, treeview):
|
def __get_tv_selection_ids(self, treeview):
|
||||||
"""get selection from treeview and return coresponding ids' from
|
"""get selection from treeview and return coresponding ids' from
|
||||||
connected model or None"""
|
connected model or None"""
|
||||||
@@ -1369,28 +1409,39 @@ class MainController(Controller):
|
|||||||
|
|
||||||
v.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
|
v.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
|
||||||
|
|
||||||
|
c = gtk.TreeViewColumn('Disc', gtk.CellRendererText(), text=1)
|
||||||
|
c.set_sort_column_id(1)
|
||||||
|
c.set_resizable(True)
|
||||||
|
c.set_visible(False)
|
||||||
|
self.view['files'].append_column(c)
|
||||||
|
|
||||||
c = gtk.TreeViewColumn('Filename')
|
c = gtk.TreeViewColumn('Filename')
|
||||||
cellpb = gtk.CellRendererPixbuf()
|
cellpb = gtk.CellRendererPixbuf()
|
||||||
cell = gtk.CellRendererText()
|
cell = gtk.CellRendererText()
|
||||||
c.pack_start(cellpb, False)
|
c.pack_start(cellpb, False)
|
||||||
c.pack_start(cell, True)
|
c.pack_start(cell, True)
|
||||||
c.set_attributes(cellpb, stock_id=6)
|
c.set_attributes(cellpb, stock_id=7)
|
||||||
c.set_attributes(cell, text=1)
|
c.set_attributes(cell, text=2)
|
||||||
|
|
||||||
c.set_sort_column_id(1)
|
|
||||||
c.set_resizable(True)
|
|
||||||
self.view['files'].append_column(c)
|
|
||||||
|
|
||||||
c = gtk.TreeViewColumn('Size', gtk.CellRendererText(), text=2)
|
|
||||||
c.set_sort_column_id(2)
|
c.set_sort_column_id(2)
|
||||||
c.set_resizable(True)
|
c.set_resizable(True)
|
||||||
self.view['files'].append_column(c)
|
self.view['files'].append_column(c)
|
||||||
|
|
||||||
c = gtk.TreeViewColumn('Date', gtk.CellRendererText(), text=3)
|
c = gtk.TreeViewColumn('Path', gtk.CellRendererText(), text=3)
|
||||||
c.set_sort_column_id(3)
|
c.set_sort_column_id(3)
|
||||||
c.set_resizable(True)
|
c.set_resizable(True)
|
||||||
|
c.set_visible(False)
|
||||||
self.view['files'].append_column(c)
|
self.view['files'].append_column(c)
|
||||||
self.view['files'].set_search_column(1)
|
|
||||||
|
c = gtk.TreeViewColumn('Size', gtk.CellRendererText(), text=4)
|
||||||
|
c.set_sort_column_id(4)
|
||||||
|
c.set_resizable(True)
|
||||||
|
self.view['files'].append_column(c)
|
||||||
|
|
||||||
|
c = gtk.TreeViewColumn('Date', gtk.CellRendererText(), text=5)
|
||||||
|
c.set_sort_column_id(5)
|
||||||
|
c.set_resizable(True)
|
||||||
|
self.view['files'].append_column(c)
|
||||||
|
self.view['files'].set_search_column(2)
|
||||||
|
|
||||||
#v.enable_model_drag_source(gtk.gdk.BUTTON1_MASK,
|
#v.enable_model_drag_source(gtk.gdk.BUTTON1_MASK,
|
||||||
# self.DND_TARGETS,
|
# self.DND_TARGETS,
|
||||||
|
|||||||
Reference in New Issue
Block a user