Module pedofd
Expand source code
#!/usr/bin/env python
# Action Handler for simple open file dialog
from __future__ import absolute_import
from __future__ import print_function
import time, os, re, string, warnings, platform, sys
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
from gi.repository import Gdk
from gi.repository import GLib
from gi.repository import GObject
from gi.repository import GdkPixbuf
from pedlib import pedconfig
#sys.path.append('..')
#sys.path.append('..' + os.sep + "pycommon")
from pycommon.pggui import *
def ofd(fname = "", self2 = None):
warnings.simplefilter("ignore")
dialog = Gtk.Dialog("pyedpro: Open File",
None,
Gtk.DialogFlags.MODAL | \
Gtk.DialogFlags.DESTROY_WITH_PARENT,
(Gtk.STOCK_CANCEL, Gtk.ResponseType.REJECT,
Gtk.STOCK_OK, Gtk.ResponseType.ACCEPT))
#dialog.set_transient_for(self2.mained.mywin)
if self2:
dialog.set_transient_for(self2.get_toplevel())
#else:
# dialog.set_transient_for(None)
dialog.set_default_response(Gtk.ResponseType.ACCEPT)
#dialog.set_position(Gtk.WindowPosition.CENTER)
dialog.set_size_request(800, 600)
dialog.set_default_size(800, 600)
#print dialog
dialog.xmulti = []
dialog.self2 = self2
#dialog.set_transient_for(pyedlib.pedconfig.conf.pe.mywin);
dialog.connect("key-press-event", area_key, dialog)
dialog.connect("key-release-event", area_key, dialog)
# Spacers
label1 = Gtk.Label(" "); label2 = Gtk.Label(" ")
label3 = Gtk.Label(" "); label4 = Gtk.Label(" ")
label5 = Gtk.Label(" "); label6 = Gtk.Label(" ")
label7 = Gtk.Label(" "); label8 = Gtk.Label(" ")
label9 = Gtk.Label(" ");
label10 = Gtk.Label.new_with_mnemonic(" Open File by Name (click on 'Open _This' to open it) ");
label11 = Gtk.Label(" "); label12 = Gtk.Label(" ");
#label13 = Gtk.Label(" "); label14 = Gtk.Label(" ");
dialog.label11 = Gtk.Label(" ")
dialog.label12 = Gtk.Label(" ")
dialog.pbox = Gtk.HBox()
fill_path(dialog)
dialog.vbox.pack_start(label4, 0, 0, 0)
dialog.vbox.pack_start(dialog.pbox, 0, 0, 0)
dialog.vbox.pack_start(xSpacer(), 0, 0, 0)
dialog.vbox.pack_start(label10, 0, 0, 0)
dialog.vbox.pack_start(xSpacer(), 0, 0, 0)
warnings.simplefilter("ignore")
dialog.entry = Gtk.Entry();
warnings.simplefilter("default")
dialog.entry.set_activates_default(True)
dialog.entry.set_text(fname)
ot = Gtk.Button.new_with_mnemonic("Open thi_s")
ot.connect("clicked", butt_this, dialog)
hbox2 = Gtk.HBox()
hbox2.pack_start(label6, 0, 0, 0)
hbox2.pack_start(dialog.entry, True, True, 0)
hbox2.pack_start(label11, 0, 0, 0)
hbox2.pack_start(ot, 0, 0, 0)
hbox2.pack_start(label7, 0, 0, 0)
dialog.vbox.pack_start(hbox2, 0, 0, 0)
dialog.vbox.pack_start(xSpacer(), 0, 0, 0)
label13 = Gtk.Label.new(" Dbl click to select one File/Dir, or Shift/Ctrl for multi select; then press Alt-O or click OK");
dialog.vbox.pack_start(label13, 0, 0, 0)
dialog.vbox.pack_start(xSpacer(), 0, 0, 0)
dialog.ts = Gtk.ListStore(str, str, str, str)
tview = create_ftree(dialog.ts)
scroll = Gtk.ScrolledWindow()
tview.connect("row-activated", tree_sel, dialog)
tview.connect("cursor-changed", tree_sel_row, dialog)
dialog.tview = tview
scroll.add(tview)
frame2 = Gtk.Frame(); frame2.add(scroll)
hbox3 = Gtk.HBox()
hbox3.pack_start(label1, 0, 0, 0)
hbox3.pack_start(frame2, True, True, 0)
hbox3.pack_start(label2, 0, 0, 0)
dialog.vbox.pack_start(hbox3, True, True, 0)
dialog.vbox.pack_start(label3, 0, 0, 0)
dialog.show_all()
populate(dialog)
dialog.set_focus(tview)
#dialog.set_focus(dialog.entry)
warnings.simplefilter("default")
response = dialog.run()
res = []
if response == Gtk.ResponseType.ACCEPT:
xmodel = dialog.ts
sel = tview.get_selection()
# Is multi selection?
iter = xmodel.get_iter_first()
while True:
#print("iterate", xmodel.get_value(iter, 0))
if sel.iter_is_selected(iter):
xstr = xmodel.get_value(iter, 0)
xstr2 = os.path.realpath(xstr)
res.append(xstr2)
iter = xmodel.iter_next(iter)
if not iter:
break
#print ("response", response, "result", res )
dialog.destroy()
return res
def butt_this(butt, dialog):
ttt = dialog.entry.get_text()
#print("butt_this", ttt)
if ttt:
# Expand user var
ttt = os.path.expanduser(ttt)
dialog.self2.mained.openfile(ttt)
# Close like we have a file
pedconfig.conf.pedwin.update_statusbar("Opened file: '%s'" % ttt);
#dialog.destroy()
#return [ttt,]
else:
pedconfig.conf.pedwin.update_statusbar("Please enter filename to open.");
def butt_click(butt, dialog):
#print butt.path
os.chdir(butt.path)
populate(dialog)
def fill_path(dialog):
cccc = dialog.pbox.get_children()
for cc in cccc:
dialog.pbox.remove(cc)
cwd = os.getcwd();
darr = cwd.split(os.sep)
dialog.pbox.pack_start(dialog.label11, 0, 0, 0)
if platform.system().find("Win") >= 0:
curr = ""
else:
curr = os.sep
for aa in darr:
butt = Gtk.Button(label=aa)
if platform.system().find("Win") >= 0:
curr = curr + aa + os.sep
else:
curr = os.path.join(curr, aa)
#print("path aa '%s' '%s'" % (aa, curr) )
butt.path = curr
butt.set_focus_on_click(False)
butt.connect("clicked", butt_click, dialog)
dialog.pbox.pack_start(butt, 0, 0, 2)
dialog.pbox.pack_start(dialog.label12, 0, 0, 0)
dialog.show_all()
# ------------------------------------------------------------------------
def populate(dialog):
fill_path(dialog)
# Clear old contents:
while True:
root = dialog.ts.get_iter_first()
if not root:
break
try:
dialog.ts.remove(root)
except:
print("Exception on rm ts", sys.exc_info())
ppp = ".."
filestat = os.stat(ppp)
piter = dialog.ts.append(row=None)
dialog.ts.set(piter, 0, str(ppp))
dialog.ts.set(piter, 1, str(filestat.st_size))
dialog.ts.set(piter, 2, mode2str(filestat.st_mode))
dialog.ts.set(piter, 3, str(time.ctime(filestat.st_mtime)))
ddd2 = os.listdir(".")
#ddd = sorted(ddd2)
ddd2.sort()
ddd = []
# List ignored extensions here
extno = [".pyc", ".o" ".lo", ".lst", ".png", ".jpg", ]
for aa in ddd2:
ext = os.path.splitext(aa)[1]
flaf = 0
# Ignore many ext
for bb in extno:
#print("bb", bb, ext)
if ext == bb:
flaf = 1
break
if not flaf:
ddd.append(aa)
for filename in ddd:
if filename[0] == ".":
continue
if os.path.isdir(filename):
try:
filestat = os.stat(filename)
except:
pass
piter = dialog.ts.append(row=None)
#dialog.ts.set(piter, 0, "["+ filename + "]")
#print filename,
dialog.ts.set(piter, 0, filename )
dialog.ts.set(piter, 1, str(filestat.st_size))
dialog.ts.set(piter, 2, mode2str(filestat.st_mode))
dialog.ts.set(piter, 3, str(time.ctime(filestat.st_mtime)))
for filename in ddd:
if filename[0] == ".":
continue
if not os.path.isdir(filename):
try:
filestat = os.stat(filename)
except:
print("Cannot stat", filename)
pass
piter = dialog.ts.append(row=None)
#print filename,
dialog.ts.set(piter, 0, filename)
dialog.ts.set(piter, 1, str(filestat.st_size))
dialog.ts.set(piter, 2, mode2str(filestat.st_mode))
#dialog.ts.set(piter, 3, str(time.ctime(filestat.st_mtime)))
dialog.ts.set(piter, 3, str(time.ctime(filestat.st_atime)))
# --------------------------------------------------------------------
def compare(model, row1, row2, user_data):
sort_column, _ = model.get_sort_column_id()
value1 = model.get_value(row1, sort_column)
value2 = model.get_value(row2, sort_column)
#print(sort_column, value1, value2)
if value1 < value2:
return -1
elif value1 == value2:
return 0
else:
return 1
def ncompare(model, row1, row2, user_data):
sort_column, _ = model.get_sort_column_id()
value1 = model.get_value(row1, sort_column)
value2 = model.get_value(row2, sort_column)
#print("n", sort_column, value1, value2, type(value1))
if int(value1) < int(value2):
return -1
elif int(value1) == int(value2):
return 0
else:
return 1
def create_ftree(ts, text = None):
# create the tview using ts
tv = Gtk.TreeView(model=ts)
tv.set_search_column(0)
tv.set_headers_clickable(True)
#tv.set_enable_search(True)
ts.set_sort_func(0, compare, None)
ts.set_sort_func(1, ncompare, None)
# create a CellRendererText to render the data
cell = Gtk.CellRendererText()
tvcolumn = Gtk.TreeViewColumn('File')
tvcolumn.set_min_width(240)
tvcolumn.pack_start(cell, True)
tvcolumn.add_attribute(cell, 'text', 0)
tvcolumn.set_sizing(Gtk.TreeViewColumnSizing.FIXED)
tvcolumn.set_sort_column_id(0)
tv.append_column(tvcolumn)
cell2 = Gtk.CellRendererText()
tvcolumn2 = Gtk.TreeViewColumn('Size')
tvcolumn2.set_min_width(100)
tvcolumn2.set_sort_column_id(1)
tvcolumn2.pack_start(cell2, True)
tvcolumn2.add_attribute(cell2, 'text', 1)
tv.append_column(tvcolumn2)
cell3 = Gtk.CellRendererText()
tvcolumn3 = Gtk.TreeViewColumn('Perm')
tvcolumn3.set_min_width(120)
tvcolumn3.pack_start(cell3, True)
tvcolumn3.add_attribute(cell3, 'text', 2)
tv.append_column(tvcolumn3)
cell4 = Gtk.CellRendererText()
tvcolumn4 = Gtk.TreeViewColumn('Modified')
tvcolumn4.set_min_width(150)
tvcolumn4.pack_start(cell4, True)
tvcolumn4.set_sort_column_id(3)
tvcolumn4.add_attribute(cell4, 'text', 3)
tv.append_column(tvcolumn4)
tv.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE)
return tv
#sel.get_selected()
def tree_sel_row(xtree, dialog):
#print("tree_sel_row", xtree)
sel = xtree.get_selection()
xmodel, xpath = sel.get_selected_rows()
if sel:
try:
xiter2 = xmodel.get_iter(xpath)
xstr = xmodel.get_value(xiter2, 0)
dialog.entry.set_text(xstr)
except:
pass
#print("sel row", sys.exc_info())
else:
dialog.entry.set_text("")
def tree_sel(xtree, xiter, xpath, dialog):
#print ("tree_sel", xtree, xiter, xpath)
sel = xtree.get_selection()
xmodel, xpath = sel.get_selected_rows()
if xpath:
for aa in xpath:
xiter2 = xmodel.get_iter(aa)
xstr = xmodel.get_value(xiter2, 0)
#print("mul selstr: ", "'" + xstr + "'" )
if click_dir_action(xstr):
dialog.xmulti = []
populate(dialog)
return
dialog.response(Gtk.ResponseType.ACCEPT)
# If directory, change to it
def click_dir_action(xstr):
if xstr[0] == "[":
xstr = xstr[1:len(xstr)-1]
if os.path.isdir(xstr):
#print ("dir", xstr)
os.chdir(xstr)
return True
# Call key handler
def area_key(area, event, self):
#print "area_key", event
# Do key down:
if event.type == Gdk.EventType.KEY_PRESS:
if event.keyval == Gdk.KEY_Escape:
#print "Esc"
return
#area.destroy()
if event.type == Gdk.EventType.KEY_PRESS:
if event.keyval == Gdk.KEY_Return:
#print "Ret"
return
#area.destroy()
if event.type == Gdk.EventType.KEY_PRESS:
if event.keyval == Gdk.KEY_BackSpace:
os.chdir("..")
populate(self)
#print "BS"
if event.keyval == Gdk.KEY_Alt_L or \
event.keyval == Gdk.KEY_Alt_R:
self.alt = True;
if event.keyval == Gdk.KEY_x or \
event.keyval == Gdk.KEY_X:
if self.alt:
area.destroy()
elif event.type == Gdk.EventType.KEY_RELEASE:
if event.keyval == Gdk.KEY_Alt_L or \
event.keyval == Gdk.KEY_Alt_R:
self.alt = False;
return None
# ------------------------------------------------------------------------
def mode2str(mode):
#print mode, oct(mode), hex(mode)
dstr = " "
if mode & 0x4000:
dstr = "d"
estr = ""
for aa in range(3):
xstr = ""
if mode & 0x4: xstr += "r"
else: xstr += "-"
if mode & 0x2: xstr += "w"
else: xstr += "-"
if mode & 0x1: xstr += "x"
else: xstr += "-"
mode = mode >> 3
estr = xstr + estr # Reverse
estr = dstr + estr
return estr
# eof
Functions
def area_key(area, event, self)
-
Expand source code
def area_key(area, event, self): #print "area_key", event # Do key down: if event.type == Gdk.EventType.KEY_PRESS: if event.keyval == Gdk.KEY_Escape: #print "Esc" return #area.destroy() if event.type == Gdk.EventType.KEY_PRESS: if event.keyval == Gdk.KEY_Return: #print "Ret" return #area.destroy() if event.type == Gdk.EventType.KEY_PRESS: if event.keyval == Gdk.KEY_BackSpace: os.chdir("..") populate(self) #print "BS" if event.keyval == Gdk.KEY_Alt_L or \ event.keyval == Gdk.KEY_Alt_R: self.alt = True; if event.keyval == Gdk.KEY_x or \ event.keyval == Gdk.KEY_X: if self.alt: area.destroy() elif event.type == Gdk.EventType.KEY_RELEASE: if event.keyval == Gdk.KEY_Alt_L or \ event.keyval == Gdk.KEY_Alt_R: self.alt = False; return None
def butt_click(butt, dialog)
-
Expand source code
def butt_click(butt, dialog): #print butt.path os.chdir(butt.path) populate(dialog)
def butt_this(butt, dialog)
-
Expand source code
def butt_this(butt, dialog): ttt = dialog.entry.get_text() #print("butt_this", ttt) if ttt: # Expand user var ttt = os.path.expanduser(ttt) dialog.self2.mained.openfile(ttt) # Close like we have a file pedconfig.conf.pedwin.update_statusbar("Opened file: '%s'" % ttt); #dialog.destroy() #return [ttt,] else: pedconfig.conf.pedwin.update_statusbar("Please enter filename to open.");
def click_dir_action(xstr)
-
Expand source code
def click_dir_action(xstr): if xstr[0] == "[": xstr = xstr[1:len(xstr)-1] if os.path.isdir(xstr): #print ("dir", xstr) os.chdir(xstr) return True
def compare(model, row1, row2, user_data)
-
Expand source code
def compare(model, row1, row2, user_data): sort_column, _ = model.get_sort_column_id() value1 = model.get_value(row1, sort_column) value2 = model.get_value(row2, sort_column) #print(sort_column, value1, value2) if value1 < value2: return -1 elif value1 == value2: return 0 else: return 1
def create_ftree(ts, text=None)
-
Expand source code
def create_ftree(ts, text = None): # create the tview using ts tv = Gtk.TreeView(model=ts) tv.set_search_column(0) tv.set_headers_clickable(True) #tv.set_enable_search(True) ts.set_sort_func(0, compare, None) ts.set_sort_func(1, ncompare, None) # create a CellRendererText to render the data cell = Gtk.CellRendererText() tvcolumn = Gtk.TreeViewColumn('File') tvcolumn.set_min_width(240) tvcolumn.pack_start(cell, True) tvcolumn.add_attribute(cell, 'text', 0) tvcolumn.set_sizing(Gtk.TreeViewColumnSizing.FIXED) tvcolumn.set_sort_column_id(0) tv.append_column(tvcolumn) cell2 = Gtk.CellRendererText() tvcolumn2 = Gtk.TreeViewColumn('Size') tvcolumn2.set_min_width(100) tvcolumn2.set_sort_column_id(1) tvcolumn2.pack_start(cell2, True) tvcolumn2.add_attribute(cell2, 'text', 1) tv.append_column(tvcolumn2) cell3 = Gtk.CellRendererText() tvcolumn3 = Gtk.TreeViewColumn('Perm') tvcolumn3.set_min_width(120) tvcolumn3.pack_start(cell3, True) tvcolumn3.add_attribute(cell3, 'text', 2) tv.append_column(tvcolumn3) cell4 = Gtk.CellRendererText() tvcolumn4 = Gtk.TreeViewColumn('Modified') tvcolumn4.set_min_width(150) tvcolumn4.pack_start(cell4, True) tvcolumn4.set_sort_column_id(3) tvcolumn4.add_attribute(cell4, 'text', 3) tv.append_column(tvcolumn4) tv.get_selection().set_mode(Gtk.SelectionMode.MULTIPLE) return tv #sel.get_selected()
def fill_path(dialog)
-
Expand source code
def fill_path(dialog): cccc = dialog.pbox.get_children() for cc in cccc: dialog.pbox.remove(cc) cwd = os.getcwd(); darr = cwd.split(os.sep) dialog.pbox.pack_start(dialog.label11, 0, 0, 0) if platform.system().find("Win") >= 0: curr = "" else: curr = os.sep for aa in darr: butt = Gtk.Button(label=aa) if platform.system().find("Win") >= 0: curr = curr + aa + os.sep else: curr = os.path.join(curr, aa) #print("path aa '%s' '%s'" % (aa, curr) ) butt.path = curr butt.set_focus_on_click(False) butt.connect("clicked", butt_click, dialog) dialog.pbox.pack_start(butt, 0, 0, 2) dialog.pbox.pack_start(dialog.label12, 0, 0, 0) dialog.show_all()
def mode2str(mode)
-
Expand source code
def mode2str(mode): #print mode, oct(mode), hex(mode) dstr = " " if mode & 0x4000: dstr = "d" estr = "" for aa in range(3): xstr = "" if mode & 0x4: xstr += "r" else: xstr += "-" if mode & 0x2: xstr += "w" else: xstr += "-" if mode & 0x1: xstr += "x" else: xstr += "-" mode = mode >> 3 estr = xstr + estr # Reverse estr = dstr + estr return estr
def ncompare(model, row1, row2, user_data)
-
Expand source code
def ncompare(model, row1, row2, user_data): sort_column, _ = model.get_sort_column_id() value1 = model.get_value(row1, sort_column) value2 = model.get_value(row2, sort_column) #print("n", sort_column, value1, value2, type(value1)) if int(value1) < int(value2): return -1 elif int(value1) == int(value2): return 0 else: return 1
def ofd(fname='', self2=None)
-
Expand source code
def ofd(fname = "", self2 = None): warnings.simplefilter("ignore") dialog = Gtk.Dialog("pyedpro: Open File", None, Gtk.DialogFlags.MODAL | \ Gtk.DialogFlags.DESTROY_WITH_PARENT, (Gtk.STOCK_CANCEL, Gtk.ResponseType.REJECT, Gtk.STOCK_OK, Gtk.ResponseType.ACCEPT)) #dialog.set_transient_for(self2.mained.mywin) if self2: dialog.set_transient_for(self2.get_toplevel()) #else: # dialog.set_transient_for(None) dialog.set_default_response(Gtk.ResponseType.ACCEPT) #dialog.set_position(Gtk.WindowPosition.CENTER) dialog.set_size_request(800, 600) dialog.set_default_size(800, 600) #print dialog dialog.xmulti = [] dialog.self2 = self2 #dialog.set_transient_for(pyedlib.pedconfig.conf.pe.mywin); dialog.connect("key-press-event", area_key, dialog) dialog.connect("key-release-event", area_key, dialog) # Spacers label1 = Gtk.Label(" "); label2 = Gtk.Label(" ") label3 = Gtk.Label(" "); label4 = Gtk.Label(" ") label5 = Gtk.Label(" "); label6 = Gtk.Label(" ") label7 = Gtk.Label(" "); label8 = Gtk.Label(" ") label9 = Gtk.Label(" "); label10 = Gtk.Label.new_with_mnemonic(" Open File by Name (click on 'Open _This' to open it) "); label11 = Gtk.Label(" "); label12 = Gtk.Label(" "); #label13 = Gtk.Label(" "); label14 = Gtk.Label(" "); dialog.label11 = Gtk.Label(" ") dialog.label12 = Gtk.Label(" ") dialog.pbox = Gtk.HBox() fill_path(dialog) dialog.vbox.pack_start(label4, 0, 0, 0) dialog.vbox.pack_start(dialog.pbox, 0, 0, 0) dialog.vbox.pack_start(xSpacer(), 0, 0, 0) dialog.vbox.pack_start(label10, 0, 0, 0) dialog.vbox.pack_start(xSpacer(), 0, 0, 0) warnings.simplefilter("ignore") dialog.entry = Gtk.Entry(); warnings.simplefilter("default") dialog.entry.set_activates_default(True) dialog.entry.set_text(fname) ot = Gtk.Button.new_with_mnemonic("Open thi_s") ot.connect("clicked", butt_this, dialog) hbox2 = Gtk.HBox() hbox2.pack_start(label6, 0, 0, 0) hbox2.pack_start(dialog.entry, True, True, 0) hbox2.pack_start(label11, 0, 0, 0) hbox2.pack_start(ot, 0, 0, 0) hbox2.pack_start(label7, 0, 0, 0) dialog.vbox.pack_start(hbox2, 0, 0, 0) dialog.vbox.pack_start(xSpacer(), 0, 0, 0) label13 = Gtk.Label.new(" Dbl click to select one File/Dir, or Shift/Ctrl for multi select; then press Alt-O or click OK"); dialog.vbox.pack_start(label13, 0, 0, 0) dialog.vbox.pack_start(xSpacer(), 0, 0, 0) dialog.ts = Gtk.ListStore(str, str, str, str) tview = create_ftree(dialog.ts) scroll = Gtk.ScrolledWindow() tview.connect("row-activated", tree_sel, dialog) tview.connect("cursor-changed", tree_sel_row, dialog) dialog.tview = tview scroll.add(tview) frame2 = Gtk.Frame(); frame2.add(scroll) hbox3 = Gtk.HBox() hbox3.pack_start(label1, 0, 0, 0) hbox3.pack_start(frame2, True, True, 0) hbox3.pack_start(label2, 0, 0, 0) dialog.vbox.pack_start(hbox3, True, True, 0) dialog.vbox.pack_start(label3, 0, 0, 0) dialog.show_all() populate(dialog) dialog.set_focus(tview) #dialog.set_focus(dialog.entry) warnings.simplefilter("default") response = dialog.run() res = [] if response == Gtk.ResponseType.ACCEPT: xmodel = dialog.ts sel = tview.get_selection() # Is multi selection? iter = xmodel.get_iter_first() while True: #print("iterate", xmodel.get_value(iter, 0)) if sel.iter_is_selected(iter): xstr = xmodel.get_value(iter, 0) xstr2 = os.path.realpath(xstr) res.append(xstr2) iter = xmodel.iter_next(iter) if not iter: break #print ("response", response, "result", res ) dialog.destroy() return res
def populate(dialog)
-
Expand source code
def populate(dialog): fill_path(dialog) # Clear old contents: while True: root = dialog.ts.get_iter_first() if not root: break try: dialog.ts.remove(root) except: print("Exception on rm ts", sys.exc_info()) ppp = ".." filestat = os.stat(ppp) piter = dialog.ts.append(row=None) dialog.ts.set(piter, 0, str(ppp)) dialog.ts.set(piter, 1, str(filestat.st_size)) dialog.ts.set(piter, 2, mode2str(filestat.st_mode)) dialog.ts.set(piter, 3, str(time.ctime(filestat.st_mtime))) ddd2 = os.listdir(".") #ddd = sorted(ddd2) ddd2.sort() ddd = [] # List ignored extensions here extno = [".pyc", ".o" ".lo", ".lst", ".png", ".jpg", ] for aa in ddd2: ext = os.path.splitext(aa)[1] flaf = 0 # Ignore many ext for bb in extno: #print("bb", bb, ext) if ext == bb: flaf = 1 break if not flaf: ddd.append(aa) for filename in ddd: if filename[0] == ".": continue if os.path.isdir(filename): try: filestat = os.stat(filename) except: pass piter = dialog.ts.append(row=None) #dialog.ts.set(piter, 0, "["+ filename + "]") #print filename, dialog.ts.set(piter, 0, filename ) dialog.ts.set(piter, 1, str(filestat.st_size)) dialog.ts.set(piter, 2, mode2str(filestat.st_mode)) dialog.ts.set(piter, 3, str(time.ctime(filestat.st_mtime))) for filename in ddd: if filename[0] == ".": continue if not os.path.isdir(filename): try: filestat = os.stat(filename) except: print("Cannot stat", filename) pass piter = dialog.ts.append(row=None) #print filename, dialog.ts.set(piter, 0, filename) dialog.ts.set(piter, 1, str(filestat.st_size)) dialog.ts.set(piter, 2, mode2str(filestat.st_mode)) #dialog.ts.set(piter, 3, str(time.ctime(filestat.st_mtime))) dialog.ts.set(piter, 3, str(time.ctime(filestat.st_atime))) # --------------------------------------------------------------------
def tree_sel(xtree, xiter, xpath, dialog)
-
Expand source code
def tree_sel(xtree, xiter, xpath, dialog): #print ("tree_sel", xtree, xiter, xpath) sel = xtree.get_selection() xmodel, xpath = sel.get_selected_rows() if xpath: for aa in xpath: xiter2 = xmodel.get_iter(aa) xstr = xmodel.get_value(xiter2, 0) #print("mul selstr: ", "'" + xstr + "'" ) if click_dir_action(xstr): dialog.xmulti = [] populate(dialog) return dialog.response(Gtk.ResponseType.ACCEPT)
def tree_sel_row(xtree, dialog)
-
Expand source code
def tree_sel_row(xtree, dialog): #print("tree_sel_row", xtree) sel = xtree.get_selection() xmodel, xpath = sel.get_selected_rows() if sel: try: xiter2 = xmodel.get_iter(xpath) xstr = xmodel.get_value(xiter2, 0) dialog.entry.set_text(xstr) except: pass #print("sel row", sys.exc_info()) else: dialog.entry.set_text("")