mirror of
https://github.com/gryf/pygtktalog.git
synced 2025-12-17 11:30:19 +01:00
211 lines
8.3 KiB
Python
211 lines
8.3 KiB
Python
# This Python file uses the following encoding: utf-8
|
|
#
|
|
# Author: Roman 'gryf' Dobosz gryf@elysium.pl
|
|
#
|
|
# Copyright (C) 2007 by Roman 'gryf' Dobosz
|
|
#
|
|
# This file is part of pyGTKtalog.
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software
|
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
|
# -------------------------------------------------------------------------
|
|
from gtkmvc import Controller
|
|
|
|
import gtk
|
|
|
|
class ConfigController(Controller):
|
|
category_dict = {
|
|
'Disk options':'disk_group',
|
|
'General':'general_group',
|
|
'Scan options':'scan_group',
|
|
'Files extensions':'ft_group',
|
|
}
|
|
category_order = ['General', 'Disk options', 'Scan options', 'Files extensions']
|
|
|
|
def __init__(self, model):
|
|
Controller.__init__(self, model)
|
|
return
|
|
|
|
def register_view(self, view):
|
|
Controller.register_view(self, view)
|
|
|
|
# get data from Config object and put it into view
|
|
self.view['mnt_entry'].set_text(self.model.confd['cd'])
|
|
self.view['ejt_entry'].set_text(self.model.confd['ejectapp'])
|
|
self.view['ch_win'].set_active(self.model.confd['savewin'])
|
|
self.view['ch_pan'].set_active(self.model.confd['savepan'])
|
|
self.view['ch_eject'].set_active(self.model.confd['eject'])
|
|
self.view['ch_xls'].set_active(self.model.confd['exportxls'])
|
|
self.view['ch_quit'].set_active(self.model.confd['confirmquit'])
|
|
self.view['ch_wrnmount'].set_active(self.model.confd['mntwarn'])
|
|
self.view['ch_wrndel'].set_active(self.model.confd['delwarn'])
|
|
self.view['ch_warnnew'].set_active(self.model.confd['confirmabandon'])
|
|
self.view['ch_thumb'].set_active(self.model.confd['thumbs'])
|
|
self.view['ch_exif'].set_active(self.model.confd['exif'])
|
|
self.view['ch_gthumb'].set_active(self.model.confd['gthumb'])
|
|
self.view['ch_compress'].set_active(self.model.confd['compress'])
|
|
self.view['ch_retrive'].set_active(self.model.confd['retrive'])
|
|
|
|
self.__toggle_scan_group()
|
|
|
|
# initialize tree view
|
|
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['config'].show();
|
|
return
|
|
# Podłącz sygnały:
|
|
|
|
#################
|
|
# connect signals
|
|
def on_category_tree_cursor_changed(self, tree):
|
|
"""change view to selected row corresponding to group of properties"""
|
|
model = tree.get_model()
|
|
selected = model.get_value(model.get_iter(tree.get_cursor()[0]), 0)
|
|
iterator = tree.get_model().get_iter_first();
|
|
while iterator != None:
|
|
if model.get_value(iterator, 0) == selected:
|
|
self.view[self.category_dict[model.get_value(iterator, 0)]].show()
|
|
self.view['desc'].set_markup("<b>%s</b>" % selected)
|
|
else:
|
|
self.view[self.category_dict[model.get_value(iterator, 0)]].hide()
|
|
iterator = tree.get_model().iter_next(iterator);
|
|
return
|
|
|
|
def on_cancelbutton_clicked(self, button):
|
|
self.view['config'].destroy()
|
|
return
|
|
|
|
def on_okbutton_clicked(self, button):
|
|
# get data from view and put it into Config object
|
|
self.model.confd['cd'] = self.view['mnt_entry'].get_text()
|
|
self.model.confd['ejectapp'] = self.view['ejt_entry'].get_text()
|
|
self.model.confd['savewin'] = self.view['ch_win'].get_active()
|
|
self.model.confd['savepan'] = self.view['ch_pan'].get_active()
|
|
self.model.confd['eject'] = self.view['ch_eject'].get_active()
|
|
self.model.confd['exportxls'] = self.view['ch_xls'].get_active()
|
|
self.model.confd['confirmquit'] = self.view['ch_quit'].get_active()
|
|
self.model.confd['mntwarn'] = self.view['ch_wrnmount'].get_active()
|
|
self.model.confd['delwarn'] = self.view['ch_wrndel'].get_active()
|
|
self.model.confd['confirmabandon'] = self.view['ch_warnnew'].get_active()
|
|
self.model.confd['thumbs'] = self.view['ch_thumb'].get_active()
|
|
self.model.confd['exif'] = self.view['ch_exif'].get_active()
|
|
self.model.confd['gthumb'] = self.view['ch_gthumb'].get_active()
|
|
self.model.confd['compress'] = self.view['ch_compress'].get_active()
|
|
self.model.confd['retrive'] = self.view['ch_retrive'].get_active()
|
|
self.model.save()
|
|
self.view['config'].destroy()
|
|
return
|
|
|
|
def on_button_ejt_clicked(self, button):
|
|
self.__show_filechooser()
|
|
return
|
|
|
|
def on_button_mnt_clicked(self, button):
|
|
self.__show_dirchooser()
|
|
return
|
|
|
|
def on_ch_retrive_toggled(self, widget):
|
|
self.__toggle_scan_group()
|
|
return
|
|
|
|
def on_ext_choose_changed(self, widget):
|
|
self.__setup_extension_tree()
|
|
return
|
|
|
|
############################
|
|
# private controller methods
|
|
def __setup_extension_tree(self):
|
|
if self.view['ext_choose'].get_active() == 0:
|
|
self.view['extension_tree'].set_model(self.model.images_tree)
|
|
else:
|
|
self.view['extension_tree'].set_model(self.model.movies_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.set_resizable(True)
|
|
self.view['extension_tree'].append_column(column)
|
|
|
|
def __toggle_scan_group(self):
|
|
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)
|
|
|
|
self.model.category_tree.clear()
|
|
for i in self.category_order:
|
|
myiter = self.model.category_tree.insert_before(None,None)
|
|
self.model.category_tree.set_value(myiter,0,i)
|
|
|
|
cell = gtk.CellRendererText()
|
|
column = gtk.TreeViewColumn("Name",cell,text=0)
|
|
column.set_resizable(True)
|
|
category_tree.append_column(column)
|
|
|
|
def __show_filechooser(self):
|
|
"""dialog for choose eject"""
|
|
dialog = gtk.FileChooserDialog(
|
|
title="Choose eject program",
|
|
action=gtk.FILE_CHOOSER_ACTION_OPEN,
|
|
buttons=(
|
|
gtk.STOCK_CANCEL,
|
|
gtk.RESPONSE_CANCEL,
|
|
gtk.STOCK_OPEN,
|
|
gtk.RESPONSE_OK
|
|
)
|
|
)
|
|
|
|
dialog.set_default_response(gtk.RESPONSE_OK)
|
|
|
|
response = dialog.run()
|
|
if response == gtk.RESPONSE_OK:
|
|
if __debug__:
|
|
print "c_config.py: __show_filechooser()", dialog.get_filename()
|
|
self.view['ejt_entry'].set_text(dialog.get_filename())
|
|
|
|
dialog.destroy()
|
|
|
|
def __show_dirchooser(self):
|
|
"""dialog for point the mountpoint"""
|
|
dialog = gtk.FileChooserDialog(
|
|
title="Choose mount point",
|
|
action=gtk.FILE_CHOOSER_ACTION_OPEN,
|
|
buttons=(
|
|
gtk.STOCK_CANCEL,
|
|
gtk.RESPONSE_CANCEL,
|
|
gtk.STOCK_OPEN,
|
|
gtk.RESPONSE_OK
|
|
)
|
|
)
|
|
|
|
dialog.set_action(gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
|
|
dialog.set_filename(self.view['mnt_entry'].get_text())
|
|
dialog.set_default_response(gtk.RESPONSE_OK)
|
|
|
|
response = dialog.run()
|
|
if response == gtk.RESPONSE_OK:
|
|
self.view['mnt_entry'].set_text(dialog.get_filename())
|
|
dialog.destroy()
|
|
|
|
pass # end of class
|
|
|