1
0
mirror of https://github.com/gryf/pygtktalog.git synced 2025-12-17 11:30:19 +01:00

* Added methods for directories tree.

This commit is contained in:
2006-12-25 17:08:55 +00:00
parent c8dbd803f3
commit 200c556ce9

View File

@@ -361,6 +361,7 @@ import gtk
import gtk.glade import gtk.glade
from pysqlite2 import dbapi2 as sqlite from pysqlite2 import dbapi2 as sqlite
import mx.DateTime
from config import Config from config import Config
import deviceHelper import deviceHelper
@@ -423,10 +424,28 @@ class PyGTKtalog:
else: else:
self.statusprogress.hide() self.statusprogress.hide()
# main tree # trees
self.discs = self.pygtkcat.get_widget('discs') self.discs = self.pygtkcat.get_widget('discs')
self.discs.append_column(gtk.TreeViewColumn('filename',gtk.CellRendererText(), text=1)) self.discs.append_column(gtk.TreeViewColumn('filename',gtk.CellRendererText(), text=1))
self.files = self.pygtkcat.get_widget('files')
c = gtk.TreeViewColumn('Filename',gtk.CellRendererText(), text=1)
c.set_sort_column_id(1)
self.files.append_column(c)
c = gtk.TreeViewColumn('Size',gtk.CellRendererText(), text=2)
c.set_sort_column_id(2)
self.files.append_column(c)
c = gtk.TreeViewColumn('Date',gtk.CellRendererText(), text=3)
c.set_sort_column_id(3)
self.files.append_column(c)
c = gtk.TreeViewColumn('Category',gtk.CellRendererText(), text=5)
c.set_sort_column_id(5)
self.files.append_column(c)
# window size # window size
a = self.pygtkcat.get_widget('hpaned1') a = self.pygtkcat.get_widget('hpaned1')
a.set_position(self.conf.confd['h']) a.set_position(self.conf.confd['h'])
@@ -452,8 +471,10 @@ class PyGTKtalog:
"on_save_as1_activate" :self.save_as, "on_save_as1_activate" :self.save_as,
"on_tb_open_clicked" :self.opendb, "on_tb_open_clicked" :self.opendb,
"on_open1_activate" :self.opendb, "on_open1_activate" :self.opendb,
"on_discs_cursor_changed" :None, "on_discs_cursor_changed" :self.show_files,
"on_files_cursor_changed" :None, "on_discs_row_activated" :self.collapse_expand_branch,
"on_files_cursor_changed" :self.show_details,
"on_files_row_activated" :self.change_view,
} }
# connect signals # connect signals
@@ -461,6 +482,85 @@ class PyGTKtalog:
self.window.connect("delete_event", self.deleteEvent) self.window.connect("delete_event", self.deleteEvent)
#}}} #}}}
def collapse_expand_branch(self, treeview, path, treecolumn):
"""if possible, expand or collapse branch of tree"""
#{{{
if treeview.row_expanded(path):
treeview.collapse_row(path)
else:
treeview.expand_row(path,False)
#}}}
def show_details(self,treeview):
"""show details about file"""
#{{{
model, paths = treeview.get_selection().get_selected_rows()
itera = model.get_iter(paths[0])
if model.get_value(itera,4) == 1:
#directory, do nothin', just turn off view
if __debug__:
print "[mainwin.py] directory selected"
else:
#file, show what you got.
if __debug__:
print "[mainwin.py] some other thing selected"
#}}}
def change_view(self, treeview, path, treecolumn):
"""show information or change directory deep down"""
#{{{
model, paths = treeview.get_selection().get_selected_rows()
itera = model.get_iter(paths[0])
current_id = model.get_value(itera,0)
if model.get_value(itera,4) == 1:
self.filemodel = db.dbfile(self,self.con,self.cur).getCurrentFiles(current_id)
self.files.set_model(self.filemodel)
pat,col = self.discs.get_cursor()
if pat!=None:
if not self.discs.row_expanded(pat):
self.discs.expand_row(pat,False)
#self.discs.unselect_all()
model, paths = self.discs.get_selection().get_selected_rows()
selected = None
new_iter = self.discs.get_model().iter_children(model.get_iter(pat))
if new_iter:
while new_iter:
if model.get_value(new_iter,0) == current_id:
self.discs.set_cursor(model.get_path(new_iter))
new_iter = model.iter_next(new_iter)
else:
#directory, do nothin', just turn off view
if __debug__:
print "[mainwin.py] directory selected"
#}}}
def sort_files_view(self, model, iter1, iter2, data):
print 'aaaa'
def show_files(self,treeview):
"""show files after click on left side disc tree"""
#{{{
model = treeview.get_model()
selected_item = model.get_value(model.get_iter(treeview.get_cursor()[0]),0)
self.filemodel = db.dbfile(self,self.con,self.cur).getCurrentFiles(selected_item)
self.files.set_model(self.filemodel)
"""
iterator = treeview.get_model().get_iter_first();
while iterator != None:
if model.get_value(iterator,0) == selected:
self.glade.get_widget(self.category_dict[model.get_value(iterator,0)]).show()
self.desc.set_markup("<b>%s</b>" % selected)
else:
self.glade.get_widget(self.category_dict[model.get_value(iterator,0)]).hide()
iterator = treeview.get_model().iter_next(iterator);
"""
#}}}
def opendb(self,widget): def opendb(self,widget):
"""open dtatabase file, decompress it to temp""" """open dtatabase file, decompress it to temp"""
#{{{ #{{{
@@ -563,9 +663,8 @@ class PyGTKtalog:
"""make all necessary tables in db file""" """make all necessary tables in db file"""
#{{{ #{{{
self.con = sqlite.connect("%s" % filename, detect_types=sqlite.PARSE_DECLTYPES|sqlite.PARSE_COLNAMES) self.con = sqlite.connect("%s" % filename, detect_types=sqlite.PARSE_DECLTYPES|sqlite.PARSE_COLNAMES)
#self.con = sqlite.connect(":memory:", detect_types=sqlite.PARSE_DECLTYPES|sqlite.PARSE_COLNAMES)
self.cur = self.con.cursor() self.cur = self.con.cursor()
self.cur.execute("create table files(id INTEGER PRIMARY KEY AUTOINCREMENT, filename TEXT, date timestamp, size integer, type integer);") self.cur.execute("create table files(id INTEGER PRIMARY KEY AUTOINCREMENT, filename TEXT, date datetime, size integer, type integer);")
self.cur.execute("create table files_connect(id INTEGER PRIMARY KEY AUTOINCREMENT, parent numeric, child numeric, depth numeric);") self.cur.execute("create table files_connect(id INTEGER PRIMARY KEY AUTOINCREMENT, parent numeric, child numeric, depth numeric);")
self.cur.execute("insert into files values(1, 'root', 0, 0, 0);") self.cur.execute("insert into files values(1, 'root', 0, 0, 0);")
self.cur.execute("insert into files_connect values(1, 1, 1, 0);") self.cur.execute("insert into files_connect values(1, 1, 1, 0);")
@@ -754,6 +853,10 @@ class PyGTKtalog:
self.discs.get_model().clear() self.discs.get_model().clear()
except: except:
pass pass
try:
self.files.get_model().clear()
except:
pass
#}}} #}}}