1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 """Ondemand Browser widget
19
20 The widget is in concept similar to the FileSelector but displaying full urls
21 for the files and adding a context menu for copying or opening the link.
22 """
23
24 import gettext
25 import gtk
26 import urlparse
27 import os
28
29 try:
30 from kiwi.ui.widgets import contextmenu
31 except:
32
33 contextmenu = None
34
35 from flumotion.ui.fileselector import FileSelector
36 from flumotion.common.interfaces import IDirectory
37
38 __version__ = "$Rev$"
39 _ = gettext.gettext
40
41
51
52
54
56 FileSelector.__init__(self, parent, adminModel)
57 self._base_uri = None
58 self._root = None
59 if contextmenu:
60 self._popupmenu = self._create_popup_menu()
61 self.set_context_menu(self._popupmenu)
62
64 self._base_uri = base_uri
65
67 self._root = os.path.normpath(path)
68 self.setDirectory(self._root)
69
71 popupmenu = contextmenu.ContextMenu()
72 item = contextmenu.ContextMenuItem('_Open Link', gtk.STOCK_JUMP_TO)
73 item.connect('activate', self._on_open_link_activate)
74 popupmenu.add(item)
75 popupmenu.append_separator()
76 item = contextmenu.ContextMenuItem('_Copy Link', gtk.STOCK_COPY)
77 item.connect('activate', self._on_copy_link_activate)
78 popupmenu.add(item)
79 popupmenu.show_all()
80 return popupmenu
81
83 self.clear()
84 for vfsFile in vfsFiles:
85 if not IDirectory.providedBy(vfsFile) and self._onlyDirectories:
86 continue
87 path = vfsFile.getPath()
88 if path in self._root and path != self._root:
89 continue
90 icon = self._renderIcon(vfsFile.iconNames)
91 rel_path = path.replace(self._root, '')
92 if self._base_uri and vfsFile.filename != '..':
93 vfsFile.filename = urlparse.urljoin(self._base_uri, rel_path)
94 self.append(_FileUri(vfsFile, icon))
95
99
104