""" Bookmarks v.0.1b, python script fo glimmer """
import glimmer
import string
import sys
import os
sys.argv=[]
sys.argv.append("null")
from gtk import *
import _gtk
import _gnome
import _gnomeui
from gnome.ui import *
import gnome.config
#
def dialog(mitem,text="dialog? what?",btCan=FALSE,btOk=TRUE,what=0):
global current_node
dlWin = GtkWindow()
dlWin.set_modal(TRUE)
dlWin.set_title(text)
dlWin.set_resize_mode(0)
dlWin.set_default_size(300,150)
#
dlNuttonOK = GtkButton("Ok")
dlNuttonOK.show()
#
dlVBox = GtkVBox(FALSE, 0)
dlVBox.show()
if what == 0: ###### message
dlFrame = GtkFrame()
dlFrame.show()
dlLabel = GtkLabel(text)
dlLabel.show()
dlFrame.add(dlLabel)
_gtk.gtk_signal_connect(dlNuttonOK._o, "clicked", dlWin.destroy)
elif what == 1: ###### add bookmark
dlFrame = GtkFrame(text)
dlFrame.show()
dlTable = GtkTable(2, 2, TRUE)
dlTable.set_homogeneous(FALSE)
dlTable.show()
## name
dlLblName = GtkLabel("name")
dlLblName.show()
dlTable.attach(dlLblName, 0, 1, 0, 1)
dlEtyName = GtkEntry()
dlEtyName.show()
dlTable.attach(dlEtyName, 1, 2, 0, 1)
## path
dlLblPath = GtkLabel("path")
dlLblPath.show()
dlTable.attach(dlLblPath, 0, 1, 1, 2)
dlEtyPath = GtkEntry()
dlEtyPath.show()
dlTable.attach(dlEtyPath, 1, 2, 1, 2)
dlFrame.add(dlTable)
if current_node != None:
tmp = bmTree.node_get_row_data(current_node)
if tmp != None:
if tmp[1] == "dir":
dlEtyPath.set_text(tmp[0])
tmp = bmTree.get_node_info(current_node)
dlEtyName.set_text(tmp[0])
args = (dlEtyName,dlEtyPath,dlWin)
_gtk.gtk_signal_connect(dlNuttonOK._o, "clicked", add_bm, args)
elif what == 4: ###### delete
dlFrame = GtkFrame()
dlFrame.show()
if current_node != None:
tmp = bmTree.node_get_row_data(current_node)
if tmp != None:
if tmp[1] == "bm":
info = bmTree.get_node_info(current_node)
dlLabel = GtkLabel("Delete bookmark: '" + info[0] +"'?")
args = (tmp[4],dlWin,)
_gtk.gtk_signal_connect(dlNuttonOK._o, "clicked", del_bm, args)
elif tmp[1] == "bmr":
dlLabel = GtkLabel("NO!")
btCan = FALSE
_gtk.gtk_signal_connect(dlNuttonOK._o, "clicked", dlWin.destroy)
else:
dlLabel = GtkLabel("NOT YET!!!")
btCan = FALSE
_gtk.gtk_signal_connect(dlNuttonOK._o, "clicked", dlWin.destroy)
else:
btCan = FALSE
dlLabel = GtkLabel("ERRORE!!!!!")
_gtk.gtk_signal_connect(dlNuttonOK._o, "clicked", dlWin.destroy)
else:
btCan = FALSE
dlLabel = GtkLabel("ERRORE!!!!!")
_gtk.gtk_signal_connect(dlNuttonOK._o, "clicked", dlWin.destroy)
dlLabel.show()
dlFrame.add(dlLabel)
#
dlVBox.add(dlFrame)
dlHBBox = GtkHButtonBox()
dlHBBox.set_layout(1)
dlHBBox.show()
dlVBox.pack_end(dlHBBox,FALSE,TRUE,0)
#
if btOk:
dlHBBox.add(dlNuttonOK)
if btCan:
dlNuttonCanc = GtkButton("Cancel")
dlNuttonCanc.show()
dlHBBox.add(dlNuttonCanc)
_gtk.gtk_signal_connect(dlNuttonCanc._o, "clicked", dlWin.destroy)
#
dlWin.add(dlVBox)
dlWin.show()
def get_bm_id():
i = 0
tmp = gnome.config.get_vector("/glimmer/Bookmarks/bm"+str(i))
while tmp != ():
if tmp[0] == "null": return str(i)
i = i + 1
tmp = gnome.config.get_vector("/glimmer/Bookmarks/bm"+str(i))
return str(i)
def add_bm(button, name, path, widget):
import string
if os.path.isdir(path.get_text()):
tmp = []
tmp.append(name.get_text())
tmp.append(string.strip(path.get_text()))
gnome.config.set_vector("/glimmer/Bookmarks/bm"+ get_bm_id(),tmp)
gnome.config.sync()
reloadTree(bmMenuReload)
else:
dialog(None,"'"+path.get_text()+"' not found",FALSE,TRUE,0)
widget.destroy()
def del_bm(button, id,widget):
tmp = []
tmp.append("null")
tmp.append("")
gnome.config.set_vector("/glimmer/Bookmarks/bm" + str(id),tmp)
gnome.config.sync()
widget.destroy()
reloadTree(bmMenuReload)
def rtrim(stringa, ch=1):
tmp = ""
i = 0
if ch < len(stringa):
while i < (len(stringa)-ch):
tmp = tmp + stringa[i]
i = i + 1
return tmp
def tree_collapse(ctree, ctree_node):
global current_node
bmTree.select(ctree_node)
current_node = ctree_node.parent
def tree_expand(ctree, ctree_node):
tmp = bmTree.node_get_row_data(ctree_node)
bmTree.select(ctree_node)
if tmp[2]== "0":
if tmp[1] == "bm":
new = [tmp[0],tmp[1],"1",tmp[3],tmp[4]]
else:
new = [tmp[0],tmp[1],"1",tmp[3]]
bmTree.node_set_row_data(ctree_node,new)
readdir(ctree_node, tmp[0],tmp[3])
def tree_select(ctree, node, column):
global current_node
current_node = node
def readdir(ctree_node,path, loading=None):
import dircache
import string
if os.path.isdir(path):
dirlisting = dircache.listdir(path)
dirlisting = dirlisting[:]
dircache.annotate(path, dirlisting)
num = 0
dlen = len(dirlisting)
bmTree.freeze()
while num < dlen:
if string.count(dirlisting[num], "/") > 0:
if not bmMenuCheckHidden.active:
if dirlisting[num][0] != ".":
hOK = TRUE
else:
hOK = FALSE
else:
hOK = TRUE
if hOK:
dname = rtrim(dirlisting[num])
tmp = [dname,""]
node = bmTree.insert_node(ctree_node,None,tmp,0,None,None,None,None,FALSE,FALSE)
lnode = bmTree.insert_node(node,None,["Loading",""])
if path != "/":
tmp = path + "/" + dname
else:
tmp = path + dname
tmp = [tmp,"dir","0",lnode]
bmTree.node_set_row_data(node,tmp)
num = num + 1
num = 0
while num < dlen:
if string.count(dirlisting[num], "/") <= 0:
if not bmMenuCheckHidden.active:
if dirlisting[num][0] != ".":
hOK = TRUE
else:
hOK = FALSE
else:
hOK = TRUE
if hOK:
tmp = []
tmp.append(dirlisting[num])
tmp.append("")
node = bmTree.insert_node(ctree_node,None,tmp)
if path != "/":
tmp = path + "/" + dirlisting[num]
else:
tmp = path + dirlisting[num]
tmp = [tmp,"file","0"]
bmTree.node_set_row_data(node,tmp)
num = num + 1
bmTree.thaw()
#
if dlen == 0:
bmTree.node_set_text(loading,0,"Empty")
loading = None
if loading != None:
bmTree.remove_node(loading)
else:
bmTree.insert_node(ctree_node,None,["error"]);
print("errore, ma porc....")
del dircache
del string
def ctree_event(object, event):
# popup menu
global current_node
if event.type == GDK.BUTTON_PRESS and event.button == 3:
bmMenu.popup(None,None,None,3,0);
if event.type == GDK._2BUTTON_PRESS and event.button == 1:
tmp = bmTree.node_get_row_data(current_node)
if tmp != None:
if tmp[1] == "file":
filename = tmp[0]
glimmer.open_file(filename)
def Un_Attach(Null):
if gnome.config.get_bool("/glimmer/Bookmarks/Attached"):
#
gnome.config.set_bool("/glimmer/Bookmarks/Attached", FALSE)
gnome.config.sync()
#
bmWindow.remove(bmVBoxContenitore)
#bmVBoxContenitore.unparent()
glimmer.add_paned_object(bmVBoxContenitore._o, "Bookmarks", 0);
bmWindow.hide()
#
bmLabelAttach.set_text("Unattach")
else:
#
gnome.config.set_bool("/glimmer/Bookmarks/Attached", TRUE)
gnome.config.sync()
#
glimmer.remove_paned_object("Bookmarks")
bmWindow.add(bmVBoxContenitore)
#bmVBoxContenitore.set_parent(bmWindow)
bmWindow.show()
#
bmLabelAttach.set_text("Attach");
def Chiudi(null):
if gnome.config.get_bool("/glimmer/Bookmarks/Attached"):
bmWindow.destroy()
else:
glimmer.remove_paned_object("Bookmarks")
def set_show_hidden_files(null):
gnome.config.set_bool("/glimmer/Bookmarks/show_hidden", bmMenuCheckHidden.active)
gnome.config.sync()
reloadTree(bmMenuReload)
def reloadTree (object):
global current_node
paths = []
if current_node != None:
if bmTree.node_get_row_data(current_node)[2] == "1":
node = current_node
else:
node = current_node.parent
while node != None:
paths.append(bmTree.node_get_row_data(node)[0])
node = node.parent
tmp = []
for i in paths[:]:
tmp.insert(0,i)
paths = tmp
buildtree()
nodes = bmTree.base_nodes()
l = len(paths)
for i in range(0,l):
for node in nodes:
if bmTree.node_get_row_data(node)[0] == paths[i]:
bmTree.expand(node)
break
nodes = node.children
def buildtree():
# set root bookmark
bmTree.clear()
tmp = ["root"]
node = bmTree.insert_node(None,None,tmp,0,None,None,None,None,FALSE,FALSE)
lnode = bmTree.insert_node(node,None,["Loading",""])
tmp = ["/","bmr","0",lnode]
bmTree.node_set_row_data(node,tmp)
# set home
if os.environ.has_key('HOME'):
tmp = ["home"]
node = bmTree.insert_node(None,None,tmp,0,None,None,None,None,FALSE,FALSE)
envHome = os.environ['HOME']
lnode = bmTree.insert_node(node,None,["Loading",""])
tmp = [envHome,"bmr","0",lnode]
bmTree.node_set_row_data(node,tmp)
# others personal bookmarks
i = 0
tmp = gnome.config.get_vector("/glimmer/Bookmarks/bm"+str(i))
while tmp != ():
if tmp[0] != "null":
node = bmTree.insert_node(None,None,[tmp[0]],0,None,None,None,None,FALSE,FALSE)
if os.path.isdir(tmp[1]):
lnode = bmTree.insert_node(node,None,["Loading",""])
tmp = [tmp[1],"bm","0",lnode,str(i)]
bmTree.node_set_row_data(node,tmp)
else:
lnode = bmTree.insert_node(node,None,["path not found",""])
tmp = [tmp[1],"bm","0",lnode,str(i)]
bmTree.node_set_row_data(node,tmp)
print("error! :(")
i = i + 1
tmp = gnome.config.get_vector("/glimmer/Bookmarks/bm"+str(i))
#
current_node = None
#
Attached = gnome.config.get_bool("/glimmer/Bookmarks/Attached")
bmWindow = GtkWindow()
bmWindow.set_title("Bookmarks")
bmWindow.set_default_size(160,290)
#
bmVBoxContenitore = GtkVBox(FALSE, 0)
bmVBoxContenitore.show()
# create bmHBoxComandi
bmHBoxComandi = GtkHBox()
bmHBoxComandi.show()
#create Attach Button
bmButtonAttach = GtkButton()
bmLabelAttach = GtkLabel()
bmLabelAttach.show()
bmButtonAttach.add(bmLabelAttach)
bmButtonAttach.set_usize(70,20)
bmButtonAttach.show()
#create close button
bmButtonChiudi = GtkButton("Close")
bmButtonChiudi.set_usize(50,20)
bmButtonChiudi.show()
# add buttons to bmHBoxComandi
bmHBoxComandi.pack_start(bmButtonAttach, FALSE, TRUE, 0)
bmHBoxComandi.pack_start(bmButtonChiudi, FALSE, TRUE, 0)
# add bmHBoxComandi to bmVBoxContenitore
bmVBoxContenitore.pack_start(bmHBoxComandi, FALSE, FALSE, 2)
# create bmTreeWindow
bmTreeWindow = GtkScrolledWindow()
bmTreeWindow.set_usize(140, 100)
bmTreeWindow.show()
# create bmTree
bmTree = GtkCTree()
bmTree.set_line_style(CTREE_LINES_NONE)
bmTree.set_expander_style(CTREE_EXPANDER_TRIANGLE)
#bmTree.set_indent(4)
bmTree.show()
# insert bmTree into bmTreeWindow
bmTreeWindow.add(bmTree)
# add bmTreeWindow into bmVBoxContenitore
bmVBoxContenitore.pack_start(bmTreeWindow, TRUE, TRUE, 2)
# create popup menu
bmMenu = GtkMenu()
bmMenuNewBookmark = GtkMenuItem("New BookMark")
bmMenu.append(bmMenuNewBookmark)
bmMenuNewBookmark.show()
bmMenuDelete = GtkMenuItem("Delete")
bmMenuDelete.show()
bmMenu.append(bmMenuDelete)
bmMenuCheckHidden = GtkCheckMenuItem("Show Hidden Files")
bmMenu.append(bmMenuCheckHidden)
bmMenuCheckHidden.set_active(gnome.config.get_bool("/glimmer/Bookmarks/show_hidden"))
bmMenuCheckHidden.show()
bmMenuReload = GtkMenuItem("Reload Tree")
bmMenuReload.show()
bmMenu.append(bmMenuReload)
bmMenu.show()
if Attached:
bmWindow.add(bmVBoxContenitore)
bmLabelAttach.set_text("Attach")
bmWindow.show()
else:
bmLabelAttach.set_text("Unattach")
glimmer.add_paned_object(bmVBoxContenitore._o, "Bookmarks", 0);
# area test
buildtree()
# signals:
_gtk.gtk_signal_connect(bmButtonChiudi._o, "clicked", Chiudi)
_gtk.gtk_signal_connect(bmButtonAttach._o, "clicked", Un_Attach)
_gtk.gtk_signal_connect(bmTree._o, "event", ctree_event)
_gtk.gtk_signal_connect(bmMenuCheckHidden._o, "toggled", set_show_hidden_files)
_gtk.gtk_signal_connect(bmTree._o, "tree_select_row",tree_select)
_gtk.gtk_signal_connect(bmTree._o, "tree_expand",tree_expand)
_gtk.gtk_signal_connect(bmTree._o, "tree_collapse",tree_collapse)
args = ("New Boormark",TRUE,TRUE,1,)
_gtk.gtk_signal_connect(bmMenuNewBookmark._o, "activate", dialog, args)
args = ("Delete",TRUE,TRUE,4)
_gtk.gtk_signal_connect(bmMenuDelete._o, "activate", dialog, args)
_gtk.gtk_signal_connect(bmMenuReload._o, "activate", reloadTree)
|