def show_popup_for_path_(self, path, x, y, button, time): node_iter = self.get_model().get_iter(path) node = self.get_model().get_value(node_iter, 3) actions = node.actions() if len(actions) == 0: return menu = gtk.Menu() def activate_item(menuitem, func): func() for action in actions: if action is Node.SEPARATOR: menu.append(gtk.SeparatorMenuItem()) continue (func, label, icon) = action item = gtk.ImageMenuItem() item.set_label(label) if icon is not None: item.set_image(gtk.image_new_from_gicon(icon, gtk.ICON_SIZE_MENU)) item.set_always_show_image(True) item.connect('activate', activate_item, func) menu.append(item) menu.show_all() def pos_func(menu): return (int(x), int(y), True) menu.popup(None, None, pos_func, button, time)
def __init__(self, folder): ''' Constructor. GUI ''' self.folder = folder gtk.Window.__init__(self) self.set_modal(True) self.set_default_size(500,200) self.set_title('Share folder through NFS') mainVBox = gtk.VBox(False, 10) mainHBox = gtk.HBox(False, 10) self.fileLabel = gtk.Label('file') infoVBox = gtk.VBox(False, 10) infoVBox.pack_start(gtk.Label('Share this folder through NFS'), False, False, 10) infoVBox.pack_start(self.fileLabel, True, True, 10) image = gtk.image_new_from_gicon(gio.ThemedIcon('folder-remote'),gtk.ICON_SIZE_DIALOG) mainHBox.pack_start(image, False, False, 30) mainHBox.pack_start(infoVBox, True, True, 10) self.shareCheckBtn = gtk.CheckButton('Share this folder') self.writeCheckBtn = gtk.CheckButton('Allow other users to create, update and delete files') mainVBox.set_border_width(10) self.okBtn = gtk.Button('', gtk.STOCK_OK) self.cancelBtn = gtk.Button('', gtk.STOCK_CANCEL) btnBox = gtk.HButtonBox() btnBox.add(self.okBtn) btnBox.add(self.cancelBtn) btnBox.set_layout(gtk.BUTTONBOX_END) btnBox.set_spacing(10) mainVBox.pack_start(mainHBox, True, True) mainVBox.pack_start(self.shareCheckBtn, False, False) mainVBox.pack_start(self.writeCheckBtn, False, False) mainVBox.pack_start(gtk.HSeparator(), False, False) mainVBox.pack_start(btnBox, False, False) self.shareCheckBtn.connect('toggled', self.on_shareCheckBtn_toggled) self.writeCheckBtn.connect('toggled', self.on_writeCheckBtn_toggled) self.okBtn.connect('clicked', self.on_okBtn_clicked) self.cancelBtn.connect('clicked', self.on_cancelBtn_clicked) self.connect('destroy', self.on_cancelBtn_clicked) self.add(mainVBox) self.es = ExportsSharing(self.folder) self.shareCheckBtn.set_active(self.es.isShared()) self.writeCheckBtn.set_active(self.es.isWritable()) self.fileLabel.set_label(self.folder) self.on_cb_toggled()