mirror of
https://github.com/gryf/pygtktalog.git
synced 2025-12-19 04:20:19 +01:00
* Code refactoring.
* Small changes in assumptions. * TODO supplement. * Moved minor features into future versions. * Added extensions configuration editor.
This commit is contained in:
@@ -32,10 +32,9 @@ class ConfigController(Controller):
|
||||
'General':'general_group',
|
||||
'Scan options':'scan_group',
|
||||
'Files extensions':'ft_group',
|
||||
'Commands':'commands_group',
|
||||
}
|
||||
category_order = ['General', 'Disk options', 'Scan options',
|
||||
'Files extensions', 'Commands']
|
||||
'Files extensions',]
|
||||
|
||||
def __init__(self, model):
|
||||
Controller.__init__(self, model)
|
||||
@@ -67,15 +66,23 @@ class ConfigController(Controller):
|
||||
self.__setup_category_tree()
|
||||
|
||||
# initialize models for files extensions
|
||||
self.view['ext_choose'].set_model(self.model.ext_list)
|
||||
self.view['ext_choose'].set_active(0)
|
||||
self.view['extension_tree'].get_selection().set_mode(gtk.SELECTION_MULTIPLE)
|
||||
#self.view['extension_tree'].set_model(self.model.ext_tree)
|
||||
self.__setup_extension_tree()
|
||||
|
||||
self.view['config'].show();
|
||||
return
|
||||
# Podłącz sygnały:
|
||||
|
||||
#################
|
||||
# connect signals
|
||||
def on_extension_tree_cursor_changed(self, tree):
|
||||
model = tree.get_model()
|
||||
selected = model.get_value(model.get_iter(tree.get_cursor()[0]), 0)
|
||||
ext = self.model.confd['extensions']
|
||||
self.view['ext_entry'].set_text(selected)
|
||||
self.view['com_entry'].set_text(ext[selected])
|
||||
|
||||
def on_category_tree_cursor_changed(self, tree):
|
||||
"""change view to selected row corresponding to group of properties"""
|
||||
model = tree.get_model()
|
||||
@@ -127,22 +134,28 @@ class ConfigController(Controller):
|
||||
self.__toggle_scan_group()
|
||||
return
|
||||
|
||||
def on_ext_choose_changed(self, widget):
|
||||
self.__setup_extension_tree()
|
||||
self.view['ext_entry'].set_text('')
|
||||
return
|
||||
|
||||
def on_ext_add_clicked(self, widget):
|
||||
ext = self.view['ext_entry'].get_text().lower()
|
||||
com = self.view['com_entry'].get_text()
|
||||
if len(ext) == 0 and len(com) == 0:
|
||||
Dialogs.Err("Config - pyGTKtalog", "Error", "Extension and command required")
|
||||
return
|
||||
|
||||
if len(com) == 0:
|
||||
Dialogs.Err("Config - pyGTKtalog", "Error", "Command is empty")
|
||||
return
|
||||
|
||||
if len(ext) == 0:
|
||||
Dialogs.Err("Config - pyGTKtalog", "Error", "Extension is empty")
|
||||
return
|
||||
if self.view['ext_choose'].get_active() == 0:
|
||||
if ext not in self.model.confd['img_ext']:
|
||||
self.model.confd['img_ext'].append(ext)
|
||||
self.model.refresh_ext('img_ext')
|
||||
else:
|
||||
self.model.confd['mov_ext'].append(ext)
|
||||
|
||||
if ext in self.model.confd['extensions'].keys():
|
||||
obj = Dialogs.Qst('Alter extension',
|
||||
'Alter extension?',
|
||||
'Extension "%s" will be altered.' % ext)
|
||||
if not obj.run():
|
||||
return
|
||||
self.model.confd['extensions'][ext] = com
|
||||
|
||||
self.__setup_extension_tree()
|
||||
return
|
||||
@@ -164,13 +177,8 @@ class ConfigController(Controller):
|
||||
if not obj.run():
|
||||
return
|
||||
|
||||
if self.view['ext_choose'].get_active() == 0:
|
||||
n = 'img_ext'
|
||||
else:
|
||||
n = 'mov_ext'
|
||||
|
||||
for i in selection:
|
||||
self.model.confd[n].remove(model.get_value(model.get_iter(i), 0))
|
||||
self.model.confd['extensions'].pop(model.get_value(model.get_iter(i), 0))
|
||||
|
||||
self.__setup_extension_tree()
|
||||
return
|
||||
@@ -178,17 +186,18 @@ class ConfigController(Controller):
|
||||
############################
|
||||
# private controller methods
|
||||
def __setup_extension_tree(self):
|
||||
if self.view['ext_choose'].get_active() == 0:
|
||||
self.model.refresh_ext('img_ext')
|
||||
else:
|
||||
self.model.refresh_ext('mov_ext')
|
||||
self.model.refresh_ext()
|
||||
|
||||
self.view['extension_tree'].set_model(self.model.ext_tree)
|
||||
|
||||
for i in self.view['extension_tree'].get_columns():
|
||||
self.view['extension_tree'].remove_column(i)
|
||||
cell = gtk.CellRendererText()
|
||||
column = gtk.TreeViewColumn("Extensions", cell, text=0)
|
||||
column = gtk.TreeViewColumn("Extension", cell, text=0)
|
||||
column.set_resizable(True)
|
||||
self.view['extension_tree'].append_column(column)
|
||||
|
||||
column = gtk.TreeViewColumn("Command", cell, text=1)
|
||||
column.set_resizable(True)
|
||||
self.view['extension_tree'].append_column(column)
|
||||
|
||||
@@ -196,6 +205,7 @@ class ConfigController(Controller):
|
||||
for i in ('ch_thumb','ch_exif','ch_gthumb'):
|
||||
self.view[i].set_sensitive(self.view['ch_retrive'].get_active())
|
||||
return
|
||||
|
||||
def __setup_category_tree(self):
|
||||
category_tree = self.view['category_tree']
|
||||
category_tree.set_model(self.model.category_tree)
|
||||
|
||||
@@ -40,6 +40,7 @@ from models.m_config import ConfigModel
|
||||
import views.v_dialogs as Dialogs
|
||||
|
||||
import gtk
|
||||
import pango
|
||||
|
||||
import datetime
|
||||
|
||||
@@ -288,24 +289,23 @@ class MainController(Controller):
|
||||
def on_files_cursor_changed(self,treeview):
|
||||
"""Show details of selected file"""
|
||||
model, paths = treeview.get_selection().get_selected_rows()
|
||||
try:
|
||||
itera = model.get_iter(paths[0])
|
||||
if model.get_value(itera,4) == 1:
|
||||
#directory, do nothin', just turn off view
|
||||
'''self.view['details'].hide()
|
||||
buf = self.view['details'].get_buffer()
|
||||
buf.set_text('')
|
||||
self.view['details'].set_buffer(buf)'''
|
||||
else:
|
||||
#file, show what you got.
|
||||
#self.details.get_top_widget()
|
||||
iter = model.get_iter(treeview.get_cursor()[0])
|
||||
selected_item = self.model.files_list.get_value(iter, 0)
|
||||
self.__get_item_info(selected_item)
|
||||
except:
|
||||
if __debug__:
|
||||
print "c_main.py: on_files_cursor_changed() insufficient \
|
||||
iterator"
|
||||
#try:
|
||||
itera = model.get_iter(paths[0])
|
||||
if model.get_value(itera,4) == 1:
|
||||
#directory, do nothin', just turn off view
|
||||
'''self.view['details'].hide()
|
||||
buf = self.view['details'].get_buffer()
|
||||
buf.set_text('')
|
||||
self.view['details'].set_buffer(buf)'''
|
||||
else:
|
||||
#file, show what you got.
|
||||
#self.details.get_top_widget()
|
||||
iter = model.get_iter(treeview.get_cursor()[0])
|
||||
selected_item = self.model.files_list.get_value(iter, 0)
|
||||
self.__get_item_info(selected_item)
|
||||
#except:
|
||||
# if __debug__:
|
||||
# print "c_main.py: on_files_cursor_changed() insufficient iterator"
|
||||
return
|
||||
|
||||
def on_files_key_release_event(self, a, event):
|
||||
@@ -554,8 +554,7 @@ class MainController(Controller):
|
||||
self.model.config.confd['confirmquit']:
|
||||
if not Dialogs.Qst('Quit application - pyGTKtalog',
|
||||
'Do you really want to quit?',
|
||||
"Current database is not saved, any changes \
|
||||
will be lost.").run():
|
||||
"Current database is not saved, any changes will be lost.").run():
|
||||
return
|
||||
|
||||
self.__store_settings()
|
||||
@@ -571,16 +570,15 @@ class MainController(Controller):
|
||||
if self.model.unsaved_project:
|
||||
if not Dialogs.Qst('Unsaved data - pyGTKtalog',
|
||||
"Current database isn't saved",
|
||||
'All changes will be lost. \
|
||||
Do you really want to abandon it?').run():
|
||||
'All changes will be lost. Do you really want to abandon it?').run():
|
||||
return
|
||||
self.model.new()
|
||||
|
||||
# clear "details" buffer
|
||||
'''txt = ""
|
||||
buf = self.view['details'].get_buffer()
|
||||
buf.set_text(txt)
|
||||
self.view['details'].set_buffer(buf)'''
|
||||
buf = self.view['description'].get_buffer()
|
||||
buf.set_text("")
|
||||
self.view['description'].set_buffer(buf)
|
||||
self.view['thumb'].hide()
|
||||
|
||||
self.__activate_ui()
|
||||
|
||||
@@ -729,10 +727,16 @@ class MainController(Controller):
|
||||
def __get_item_info(self, item):
|
||||
self.view['description'].show()
|
||||
set = self.model.get_file_info(item)
|
||||
|
||||
buf = self.view['description'].get_buffer()
|
||||
if set.has_key('description'):
|
||||
buf.set_text(set['description'])
|
||||
|
||||
if set.has_key('file_info'):
|
||||
buf.set_text(set['file_info'])
|
||||
if set.has_key('description'):
|
||||
tag = buf.create_tag()
|
||||
tag.set_property('weight', pango.WEIGHT_BOLD)
|
||||
buf.insert_with_tags(buf.get_end_iter(), "\nDetails:\n", tag)
|
||||
buf.insert(buf.get_end_iter(), set['description'])
|
||||
|
||||
else:
|
||||
buf.set_text('')
|
||||
self.view['description'].set_buffer(buf)
|
||||
|
||||
Reference in New Issue
Block a user