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:
113
mainwin.py
113
mainwin.py
@@ -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
|
||||||
|
|
||||||
#}}}
|
#}}}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user