summaryrefslogtreecommitdiffstats
path: root/src/fringlib/fringui.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/fringlib/fringui.py')
-rw-r--r--src/fringlib/fringui.py61
1 files changed, 39 insertions, 22 deletions
diff --git a/src/fringlib/fringui.py b/src/fringlib/fringui.py
index ca634d1..a6c606d 100644
--- a/src/fringlib/fringui.py
+++ b/src/fringlib/fringui.py
@@ -3,7 +3,7 @@ import cairo
import sys
import os
-from fringwalker import FringWalker
+from fringwalker import *
from fringrenderer import FringRenderer
from fringutil import *
@@ -37,6 +37,14 @@ ui = """
<separator />
<menuitem action="Quit"/>
</menu>
+
+ <menu action="TreeWalker">
+ <menuitem action="Python"/>
+ <menuitem action="Python gnomevfs"/>
+ <menuitem action="c++"/>
+ </menu>
+
+
<menu action="View">
<menuitem action="Show Hidden Files"/>
<separator />
@@ -56,7 +64,7 @@ ui = """
class UI( gtk.Window ):
- def __init__(self, path):
+ def __init__(self, uri):
self.busy_cursor = 0
self.backgroundColour = (1,1,1)
self.data = None
@@ -67,14 +75,15 @@ class UI( gtk.Window ):
# create gui
gtk.Window.__init__(self)
self.set_title("fring");
- self.__init_gui(path)
+ self.__init_gui()
# walk directory
self.walker.connect("list-changed",self.__list_changed)
self.walker.connect("finished", self.__walker_finished)
- self.open_folder(path)
+ self.walker.connect("manually-stopped", lambda w: self.__show_busy_cursor(-1))
+ self.open_folder(uri)
- def __init_gui(self, path):
+ def __init_gui(self):
# create menubar
uimanager = gtk.UIManager()
@@ -82,6 +91,7 @@ class UI( gtk.Window ):
self.add_accel_group(accelgroup)
ag_global = gtk.ActionGroup('ag_global')
ag_global.add_actions([
+ ('TreeWalker', None, "TreeWalker"),
('FRing', None, "_Folder"),
('View', None, "_View"),
('Help', None, "_Help"),
@@ -91,12 +101,22 @@ class UI( gtk.Window ):
('Zoom In', gtk.STOCK_ZOOM_IN, "Zoom _In", "<ctrl>Up", "Zoom In", lambda w: self.zoom(w,0.2)),
('Zoom Out', gtk.STOCK_ZOOM_OUT, "Zoom _Out", "<ctrl>Down", "Zoom Out", lambda w: self.zoom(w,-0.2)),
('Save Image...', gtk.STOCK_SAVE_AS, "_Save Image...", None, "Save Image...", self.save_image),
- ('Refresh', gtk.STOCK_REFRESH, "_Refresh Tree", "<ctrl>R", "Refresh Tree", lambda w: self.__set_path(self.path)),
+ ('Refresh', gtk.STOCK_REFRESH, "_Refresh Tree", "<ctrl>R", "Refresh Tree", lambda w: self.__set_uri(self.uri)),
('About', gtk.STOCK_ABOUT, "_About", None, "About", self.about_dialog),
])
action = gtk.ToggleAction("Show Hidden Files", "Show Hidden Files", None, None)
+ action.set_active(True)
action.connect("toggled",self.__hidden_files_toggled)
ag_global.add_action(action)
+
+ # add a menu with radio buttons to choose the walking method
+ ag_global.add_radio_actions([
+ ('Python', None, "Python", None, None, WALKER_CLASSIC),
+ ('Python gnomevfs', None, "Python gnomevfs", None, None, WALKER_GNOMEVFS),
+ ('c++', None, "c++", None, None, WALKER_CPP),
+ ], 1)
+ self.methodaction = ag_global.get_action("c++")
+
uimanager.insert_action_group(ag_global, 0)
uimanager.add_ui_from_string(ui)
menubar = uimanager.get_widget('/MenuBar')
@@ -113,7 +133,8 @@ class UI( gtk.Window ):
b = gtk.FileChooserButton('Select a Folder')
b.set_action(gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
- b.connect("current-folder-changed", lambda w: self.__set_path(w.get_current_folder()))
+ b.set_local_only(False)
+ b.connect("current-folder-changed", lambda w: self.__set_uri(w.get_uri()))
toolbar.pack_start( b, True )
self.filechooserbutton = b
@@ -155,12 +176,9 @@ class UI( gtk.Window ):
self.eventbox.connect("size-allocate",self.__on_resize)
self.connect("delete_event", self.close)
-
-
- def open_folder(self,path):
- print "open",path
+ def open_folder(self,uri):
# change folder by changing the chooser button
- self.filechooserbutton.set_current_folder(path)
+ self.filechooserbutton.set_current_folder_uri(uri)
def about_dialog(self,widget):
d = gtk.AboutDialog()
@@ -176,7 +194,7 @@ class UI( gtk.Window ):
gtk.main_quit()
def open_parent(self,widget):
- p = os.path.split(self.path)
+ p = os.path.split(self.uri)
p = os.path.join(p[:-1])
self.open_folder(p[0])
@@ -199,10 +217,9 @@ class UI( gtk.Window ):
self.renderer.HEIGHT = self.height
self.renderer.INNER_RADIUS = self.height/12
self.renderer.RING_RADIUS = self.height/10
- #self.renderer.INNER_RADIUS *= self.zoomfactor
self.renderer.RING_RADIUS *= self.zoomfactor
self.renderer.RINGS_MAX = 3
- self.renderer.draw_segment(self.ctx, 0, 0, 1, 0, 1, self.data, self.path)
+ self.renderer.draw_segment(self.ctx, 0, 0, 1, 0, 1, self.data, self.uri)
self.image.queue_draw()
self.__show_busy_cursor(-1)
@@ -225,26 +242,26 @@ class UI( gtk.Window ):
#----------------------------------------------------------- private methods
- def __set_path(self,path):
+ def __set_uri(self,uri):
""" Set a path and start parsing. Also used to refresh or reset. """
- self.path = path
+ self.uri = uri
self.walker.stop()
- if path is None: return
- self.walker.walk(path);
- self.__show_busy_cursor(1)
+ if uri:
+ self.walker.walk(uri,self.methodaction.get_current_value())
+ self.__show_busy_cursor(1)
def __selectfolder(self,widget):
""" Open a dialog to select a folder """
d = gtk.FileChooserDialog(None, self,
gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
(gtk.STOCK_CANCEL,0,gtk.STOCK_OK,1))
- if d.run() == 1: self.open_folder(d.get_current_folder())
+ if d.run() == 1: self.open_folder(d.get_uri())
d.destroy()
def __hidden_files_toggled(self,widget):
if self.walker.showhidden == widget.get_active(): return
self.walker.showhidden = widget.get_active()
- self.__set_path(self.path)
+ self.__set_uri(self.uri)
def __move_event(self, widget, event):