~pyneighborhood/pyneighborhood/0.5

« back to all changes in this revision

Viewing changes to bookmarks.py

  • Committer: definer
  • Date: 2006-09-16 18:34:46 UTC
  • Revision ID: svn-v3-trunk0:918a6f1d-dd1c-0410-8c33-97c2c1a26c01:trunk:6

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/env python
 
2
 
 
3
# creates a bookmarks view
 
4
 
 
5
import pygtk
 
6
pygtk.require('2.0')
 
7
import gtk
 
8
import gobject 
 
9
 
 
10
import readconfig
 
11
import dialog
 
12
import handlers
 
13
import mainwindow
 
14
 
 
15
class Bookmarks_Widget:
 
16
    
 
17
    def instance(self):
 
18
        return self
 
19
    
 
20
    def menuaction_handler_scan(self, parm1):
 
21
        handlers.scan(self, self.mainwindow)
 
22
                
 
23
    def menuaction_handler_umount(self, parm1):
 
24
        self.mainwindow.umount()
 
25
 
 
26
    def menuaction_handler_mount(self, parm1):
 
27
        handlers.mount(self, self.mainwindow)
 
28
                
 
29
    def menuaction_handler_filemngr(self, parm1):
 
30
        handlers.filemanager(self, self.mainwindow)
 
31
 
 
32
    def menuaction_handler_remove(self, parm1):
 
33
        handlers.remove(self, self.mainwindow)
 
34
 
 
35
    def widget_popup(self, type, mounted):
 
36
        popup = gtk.Menu()
 
37
        separator = gtk.SeparatorMenuItem()
 
38
        if type == "host_menu":
 
39
            item1 = gtk.ImageMenuItem("SCAN")
 
40
            item1.connect("activate", self.menuaction_handler_scan)
 
41
            item2 = gtk.ImageMenuItem(gtk.STOCK_REMOVE)
 
42
            item2.connect("activate", self.menuaction_handler_remove)
 
43
            popup.append(item1)
 
44
            popup.append(item2)
 
45
        if type == "share_menu":
 
46
            if mounted == False:
 
47
                item1 = gtk.ImageMenuItem("UNMOUNT")
 
48
                item1.connect("activate", self.menuaction_handler_umount)
 
49
                item2 = gtk.ImageMenuItem("FILEMANAGER")
 
50
                item2.connect("activate", self.menuaction_handler_filemngr)
 
51
                popup.append(item1)
 
52
                popup.append(item2)
 
53
            else:
 
54
                item1 = gtk.ImageMenuItem("MOUNT")
 
55
                item1.connect("activate", self.menuaction_handler_mount)
 
56
                popup.append(item1)
 
57
        menu = popup
 
58
        return menu
 
59
 
 
60
    def select_on_click(self, treeview):
 
61
        treestore = treeview.get_selection()
 
62
        (model, iter) = treestore.get_selected()
 
63
        if self.if_popup == 1:
 
64
            if model.iter_parent(iter) == None:
 
65
                menu = self.widget_popup("host_menu", False)
 
66
            else:
 
67
                mountpoint = model.get_value(iter, 3)
 
68
                if mountpoint == '':
 
69
                    menu = self.widget_popup("share_menu", True)
 
70
                else:
 
71
                    menu = self.widget_popup("share_menu", False)
 
72
 
 
73
            menu.popup(None, None, None, 3, gtk.get_current_event_time())
 
74
            menu.show_all()
 
75
            self.if_popup = 0
 
76
 
 
77
    def button_clicked(self, widget, event):
 
78
        if event.type == gtk.gdk._2BUTTON_PRESS and event.button == 1:
 
79
            treeselection = self.treeview.get_selection()
 
80
            (model, iter) = treeselection.get_selected()
 
81
            if iter != None:
 
82
                path = model.get_path(iter)
 
83
                column = self.treeview.get_column(0)
 
84
                if model.iter_parent(iter) == None:
 
85
                    handlers.scan(self, self.mainwindow)
 
86
                else:
 
87
                    handlers.mount(self, self.mainwindow)
 
88
        if event.type == gtk.gdk.BUTTON_PRESS and event.button == 3:
 
89
            self.if_popup = 1
 
90
 
 
91
    def Bookmarks(self):
 
92
        # bookmarks
 
93
        self.column_names = ['Name', 'Comment', 'Mountpoint']
 
94
        
 
95
        # if 1, menu pops up
 
96
        self.if_popup = 0
 
97
 
 
98
        # we'll add some data now - a list of our hosts
 
99
        self.hostlist = readconfig.readconfig()
 
100
        c = 0
 
101
        self.piter = []
 
102
        for parent in self.hostlist:
 
103
            iter = self.treestore.append(None, [ self.hostlist[c], 'host', "", ""])
 
104
            self.treestore.set(iter, 2, '')
 
105
            c = c + 1
 
106
 
 
107
        # create the TreeView using treestore
 
108
        tvcolumn = [None] * len(self.column_names)
 
109
 
 
110
        # create 3 TreeViewColumns to display the data
 
111
        cell = gtk.CellRendererText()
 
112
        cell1 = gtk.CellRendererText()
 
113
        cellpb = gtk.CellRendererPixbuf()
 
114
        tvcolumn[0] = gtk.TreeViewColumn(self.column_names[0])
 
115
        self.treeview.append_column(tvcolumn[0])
 
116
 
 
117
        tvcolumn[0].pack_start(cellpb, False)
 
118
        tvcolumn[0].pack_start(cell, True)
 
119
        tvcolumn[0].set_attributes(cellpb, stock_id=1)
 
120
        tvcolumn[0].set_attributes(cell, text=0)
 
121
 
 
122
        tvcolumn[0].set_resizable(True)
 
123
        for n in range (1, len(self.column_names)):
 
124
            tvcolumn[n] = gtk.TreeViewColumn(self.column_names[n])
 
125
            self.treeview.append_column(tvcolumn[n])
 
126
            tvcolumn[n].pack_start(cell1, True)
 
127
            tvcolumn[n].set_attributes(cell1, text=n+1)
 
128
            tvcolumn[n].set_resizable(True)
 
129
 
 
130
        self.treeview.set_expander_column(self.treeview.get_column(0))
 
131
 
 
132
        # create scrollbars
 
133
        scrolledwindow = gtk.ScrolledWindow()
 
134
        scrolledwindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
 
135
        scrolledwindow.add(self.treeview)
 
136
 
 
137
        # make it searchable and connect popups
 
138
        self.treeview.set_search_column(1)
 
139
        self.treeview.connect("cursor-changed", self.select_on_click)
 
140
        self.treeview.connect("button_press_event", self.button_clicked)
 
141
 
 
142
        return scrolledwindow, self.treestore, self.treeview
 
143
 
 
144
    def __init__(self, MainWindow):
 
145
        # create a TreeStore with one string column to use as the model
 
146
        self.treestore = gtk.TreeStore(str, str, str, str)
 
147
        self.treeview = gtk.TreeView(self.treestore)
 
148
        self.mainwindow = MainWindow
 
149