def onEventLabelPopup(self, label, menu, ids): menu = gtk.Menu() self.labelMenuAddCopyItems(label, menu) #### groupId, eventId = ids event = ui.getEvent(groupId, eventId) group = ui.eventGroups[groupId] if not event.readOnly: menu.add(gtk.SeparatorMenuItem()) ### winTitle = _('Edit ') + event.desc menu.add(labelStockMenuItem( winTitle, gtk.STOCK_EDIT, self.editEventClicked, winTitle, event, groupId, )) ### moveToItem = labelStockMenuItem( _('Move to %s')%'...', None,## FIXME ) moveToMenu = gtk.Menu() for new_group in ui.eventGroups: if new_group.id == group.id: continue if not new_group.enable: continue if event.name in new_group.acceptsEventTypes: new_groupItem = gtk.ImageMenuItem() new_groupItem.set_label(new_group.title) ## image = gtk.Image() image.set_from_pixbuf(newOutlineSquarePixbuf(new_group.color, 20)) new_groupItem.set_image(image) ## new_groupItem.connect('activate', self.moveEventToGroupFromMenu, event, group, new_group) ## moveToMenu.add(new_groupItem) moveToItem.set_submenu(moveToMenu) menu.add(moveToItem) ### menu.add(gtk.SeparatorMenuItem()) ### menu.add(labelImageMenuItem( _('Move to %s') % ui.eventTrash.title, ui.eventTrash.icon, self.moveEventToTrash, event, groupId, )) #### menu.show_all() menu.popup(None, None, None, 3, 0) ui.updateFocusTime()
def labelMenuAddCopyItems(self, label, menu): menu.add( labelStockMenuItem('Copy _All', gtk.STOCK_COPY, self.copyAll, label)) #### itemCopy = labelStockMenuItem( '_Copy', gtk.STOCK_COPY, self.copy, label, ) if label.get_property('cursor-position') == label.get_property( 'selection-bound'): itemCopy.set_sensitive(False) menu.add(itemCopy)
def onEventLabelPopup(self, label, menu, ids): menu = gtk.Menu() self.labelMenuAddCopyItems(label, menu) #### groupId, eventId = ids event = ui.getEvent(groupId, eventId) if not event.readOnly: menu.add(gtk.SeparatorMenuItem()) ### winTitle = _('Edit ') + event.desc menu.add(labelStockMenuItem( winTitle, gtk.STOCK_EDIT, self.editEventClicked, winTitle, event, groupId, )) ### menu.add(gtk.SeparatorMenuItem()) ### menu.add(labelImageMenuItem( _('Move to %s') % ui.eventTrash.title, ui.eventTrash.icon, self.moveEventToTrash, event, groupId, )) #### menu.show_all() menu.popup(None, None, None, 3, 0) ui.updateFocusTime()
def genRightClickMenu(self, path): gid = self.trees[path][0] eid = self.trees[path][1] group = ui.eventGroups[gid] event = group[eid] ## menu = gtk.Menu() ## menu.add(labelStockMenuItem( 'Edit', gtk.STOCK_EDIT, self.editEventFromMenu, path, )) ## menu.add(self.getMoveToGroupSubMenu(path, group, event)) menu.add(gtk.SeparatorMenuItem()) menu.add(self.getCopyToGroupSubMenu(path, event)) ## menu.add(gtk.SeparatorMenuItem()) menu.add(labelImageMenuItem( _('Move to %s')%ui.eventTrash.title, ui.eventTrash.icon, self.moveEventToTrashFromMenu, path, )) ## menu.show_all() return menu
def getCopyToGroupSubMenu(self, path, event): ## returns a MenuItem instance item = labelStockMenuItem( _('Copy to %s')%'...', None,## FIXME ) subMenu = gtk.Menu() ### for new_group in ui.eventGroups: #if not new_group.enable:## FIXME # continue if event.name in new_group.acceptsEventTypes: new_groupItem = gtk.ImageMenuItem() new_groupItem.set_label(new_group.title) ## image = gtk.Image() image.set_from_pixbuf(newOutlineSquarePixbuf(new_group.color, 20)) new_groupItem.set_image(image) ## new_groupItem.connect( 'activate', self.copyEventToGroupFromMenu, path, event, new_group, ) ## subMenu.add(new_groupItem) ## item.set_submenu(subMenu) return item
def __init__(self, filename=""): gtk.Button.__init__(self) self.image = gtk.Image() self.add(self.image) self.dialog = gtk.FileChooserDialog(title=_("Select Icon File"), action=gtk.FILE_CHOOSER_ACTION_OPEN) self.dialog.set_local_only(True) okB = self.dialog.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK) cancelB = self.dialog.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL) clearB = self.dialog.add_button(gtk.STOCK_CLEAR, gtk.RESPONSE_REJECT) if ui.autoLocale: cancelB.set_label(_("_Cancel")) cancelB.set_image(gtk.image_new_from_stock(gtk.STOCK_CANCEL, gtk.ICON_SIZE_BUTTON)) okB.set_label(_("_OK")) okB.set_image(gtk.image_new_from_stock(gtk.STOCK_OK, gtk.ICON_SIZE_BUTTON)) clearB.set_label(_("Clear")) clearB.set_image(gtk.image_new_from_stock(gtk.STOCK_CLEAR, gtk.ICON_SIZE_BUTTON)) ### menu = gtk.Menu() self.menu = menu menu.add(labelStockMenuItem(_("None"), None, self.menuItemActivate, "")) for item in ui.eventTags: icon = item.icon if icon: menuItem = gtk.ImageMenuItem(item.desc) menuItem.set_image(gtk.image_new_from_file(icon)) menuItem.connect("activate", self.menuItemActivate, icon) menu.add(menuItem) menu.show_all() ### self.dialog.connect("file-activated", self.fileActivated) self.dialog.connect("response", self.dialogResponse) # self.connect('clicked', lambda button: button.dialog.run()) self.connect("button-press-event", self.buttonPressEvent) ### self.set_filename(filename)
def labelMenuAddCopyItems(self, label, menu): menu.add(labelStockMenuItem( 'Copy _All', gtk.STOCK_COPY, self.copyAll, label )) #### itemCopy = labelStockMenuItem( '_Copy', gtk.STOCK_COPY, self.copy, label, ) if label.get_property('cursor-position') == label.get_property('selection-bound'): itemCopy.set_sensitive(False) menu.add(itemCopy)
def __init__(self, filename=''): gtk.Button.__init__(self) self.image = gtk.Image() self.add(self.image) self.dialog = gtk.FileChooserDialog( title=_('Select Icon File'), action=gtk.FILE_CHOOSER_ACTION_OPEN, ) self.dialog.set_local_only(True) okB = self.dialog.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK) cancelB = self.dialog.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL) clearB = self.dialog.add_button(gtk.STOCK_CLEAR, gtk.RESPONSE_REJECT) if ui.autoLocale: cancelB.set_label(_('_Cancel')) cancelB.set_image( gtk.image_new_from_stock(gtk.STOCK_CANCEL, gtk.ICON_SIZE_BUTTON)) okB.set_label(_('_OK')) okB.set_image( gtk.image_new_from_stock(gtk.STOCK_OK, gtk.ICON_SIZE_BUTTON)) clearB.set_label(_('Clear')) clearB.set_image( gtk.image_new_from_stock(gtk.STOCK_CLEAR, gtk.ICON_SIZE_BUTTON)) ### menu = gtk.Menu() self.menu = menu menu.add(labelStockMenuItem(_('None'), None, self.menuItemActivate, '')) for item in ui.eventTags: icon = item.icon if icon: menuItem = gtk.ImageMenuItem(item.desc) menuItem.set_image(gtk.image_new_from_file(icon)) menuItem.connect('activate', self.menuItemActivate, icon) menu.add(menuItem) menu.show_all() ### self.dialog.connect('file-activated', self.fileActivated) self.dialog.connect('response', self.dialogResponse) #self.connect('clicked', lambda button: button.dialog.run()) self.connect('button-press-event', self.buttonPressEvent) ### self.set_filename(filename)
def onLabelPopupPopulate(self, label, menu, ids): menu = gtk.Menu() #### itemCopyAll = gtk.ImageMenuItem(_('Copy _All')) itemCopyAll.set_image(gtk.image_new_from_stock(gtk.STOCK_COPY, gtk.ICON_SIZE_MENU)) itemCopyAll.connect('activate', self.copyAll, label) menu.add(itemCopyAll) #### itemCopy = gtk.ImageMenuItem(_('_Copy')) itemCopy.set_image(gtk.image_new_from_stock(gtk.STOCK_COPY, gtk.ICON_SIZE_MENU)) if label.get_property('cursor-position') != label.get_property('selection-bound'): itemCopy.connect('activate', self.copy, label) else: itemCopy.set_sensitive(False) menu.add(itemCopy) #### menu.add(gtk.SeparatorMenuItem()) #### (groupId, eventId) = ids event = ui.getEvent(groupId, eventId) ### winTitle = _('Edit ') + event.desc menu.add(labelStockMenuItem( winTitle, gtk.STOCK_EDIT, self.editEventClicked, winTitle, event, groupId, )) ### menu.add(gtk.SeparatorMenuItem()) ### menu.add(labelImageMenuItem( _('Move to %s')%ui.eventTrash.title, ui.eventTrash.icon, self.moveEventToTrash, event, groupId, )) #### menu.show_all() menu.popup(None, None, None, 3, 0)
def onEventLabelPopup(self, label, menu, occurData): from scal2.ui_gtk.event.utils import menuItemFromEventGroup menu = gtk.Menu() self.labelMenuAddCopyItems(label, menu) #### groupId, eventId = occurData['ids'] event = ui.getEvent(groupId, eventId) group = ui.eventGroups[groupId] if not event.readOnly: menu.add(gtk.SeparatorMenuItem()) ### winTitle = _('Edit ') + event.desc menu.add( labelStockMenuItem( winTitle, gtk.STOCK_EDIT, self.editEventClicked, winTitle, event, groupId, )) ### moveToItem = labelStockMenuItem( _('Move to %s') % '...', None, ## FIXME ) moveToMenu = gtk.Menu() for newGroup in ui.eventGroups: if newGroup.id == group.id: continue if not newGroup.enable: continue if event.name in newGroup.acceptsEventTypes: newGroupItem = menuItemFromEventGroup(newGroup) newGroupItem.connect( 'activate', self.moveEventToGroupFromMenu, event, group, newGroup, ) moveToMenu.add(newGroupItem) moveToItem.set_submenu(moveToMenu) menu.add(moveToItem) ### if not event.isSingleOccur: newEventType = 'allDayTask' if occurData[ 'is_allday'] else 'task' copyOccurItem = labelStockMenuItem( _('Copy as %s to...') % event_lib.classes.event. byName[newEventType].desc, ## FIXME None, ) copyOccurMenu = gtk.Menu() for newGroup in ui.eventGroups: if not newGroup.enable: continue if newEventType in newGroup.acceptsEventTypes: newGroupItem = menuItemFromEventGroup(newGroup) newGroupItem.connect( 'activate', self.copyOccurToGroupFromMenu, newGroup, newEventType, event, occurData, ) copyOccurMenu.add(newGroupItem) copyOccurItem.set_submenu(copyOccurMenu) menu.add(copyOccurItem) ### menu.add(gtk.SeparatorMenuItem()) ### menu.add( labelImageMenuItem( _('Move to %s') % ui.eventTrash.title, ui.eventTrash.icon, self.moveEventToTrash, event, groupId, )) #### menu.show_all() menu.popup(None, None, None, 3, 0) ui.updateFocusTime()
def buttonPress(self, obj, gevent): x = gevent.x y = gevent.y w = self.allocation.width h = self.allocation.height b = gevent.button if b==1: for button in self.buttons: if button.contains(x, y, w, h): button.func(gevent) return True if b in (1, 3): for box in self.data['boxes']: if not box.ids: continue if box.contains(x, y): (gid, eid) = box.ids group = ui.eventGroups[gid] event = group[eid] ### if b==1: if box.hasBorder: top = y - box.y left = x - box.x right = box.x + box.w - x minA = min(boxMoveBorder, top, left, right) editType = None if top == minA: editType = 0 t0 = event.getStartEpoch() self.window.set_cursor(gdk.Cursor(gdk.FLEUR)) elif right == minA: editType = 1 t0 = event.getEndEpoch() self.window.set_cursor(gdk.Cursor(gdk.RIGHT_SIDE)) elif left == minA: editType = -1 t0 = event.getStartEpoch() self.window.set_cursor(gdk.Cursor(gdk.LEFT_SIDE)) if editType is not None: self.boxEditing = (editType, event, box, x, t0) return True elif b==3: menu = gtk.Menu() ## winTitle = _('Edit') + ' ' + event.desc menu.add(labelStockMenuItem( winTitle, gtk.STOCK_EDIT, self.editEventClicked, winTitle, event, gid, )) ## winTitle = _('Edit') + ' ' + group.desc menu.add(labelStockMenuItem(winTitle, gtk.STOCK_EDIT, self.editGroupClicked, winTitle, group)) ## menu.add(gtk.SeparatorMenuItem()) ## menu.add(labelImageMenuItem( _('Move to %s')%ui.eventTrash.title, ui.eventTrash.icon, self.moveEventToTrash, group, event, )) ## menu.show_all() menu.popup(None, None, None, 3, 0) return False
def buttonPress(self, obj, gevent): x = gevent.x y = gevent.y w = self.get_allocation().width h = self.get_allocation().height if gevent.button == 1: for button in self.buttons: if button.contains(x, y, w, h): button.func(gevent) return True #### for box in self.data['boxes']: if not box.hasBorder: continue if not box.ids: continue if not box.contains(x, y): continue gid, eid = box.ids group = ui.eventGroups[gid] event = group[eid] #### top = y - box.y left = x - box.x right = box.x + box.w - x minA = min(boxMoveBorder, top, left, right) editType = None if top == minA: editType = 0 t0 = event.getStartEpoch() self.get_window().set_cursor(gdk.Cursor(gdk.FLEUR)) elif right == minA: editType = 1 t0 = event.getEndEpoch() self.get_window().set_cursor(gdk.Cursor(gdk.RIGHT_SIDE)) elif left == minA: editType = -1 t0 = event.getStartEpoch() self.get_window().set_cursor(gdk.Cursor(gdk.LEFT_SIDE)) if editType is not None: self.boxEditing = (editType, event, box, x, t0) return True elif gevent.button == 3: for box in self.data['boxes']: if not box.ids: continue if not box.contains(x, y): continue gid, eid = box.ids group = ui.eventGroups[gid] event = group[eid] #### menu = gtk.Menu() ## if not event.readOnly: winTitle = _('Edit') + ' ' + event.desc menu.add( labelStockMenuItem( winTitle, gtk.STOCK_EDIT, self.editEventClicked, winTitle, event, gid, )) ## winTitle = _('Edit') + ' ' + group.desc menu.add( labelStockMenuItem( winTitle, gtk.STOCK_EDIT, self.editGroupClicked, winTitle, group, )) ## menu.add(gtk.SeparatorMenuItem()) ## menu.add( labelImageMenuItem( _('Move to %s') % ui.eventTrash.title, ui.eventTrash.icon, self.moveEventToTrash, group, event, )) ## menu.show_all() menu.popup(None, None, None, 3, 0) return False
def onEventLabelPopup(self, label, menu, occurData): from scal2.ui_gtk.event.utils import menuItemFromEventGroup menu = gtk.Menu() self.labelMenuAddCopyItems(label, menu) #### groupId, eventId = occurData['ids'] event = ui.getEvent(groupId, eventId) group = ui.eventGroups[groupId] if not event.readOnly: menu.add(gtk.SeparatorMenuItem()) ### winTitle = _('Edit ') + event.desc menu.add(labelStockMenuItem( winTitle, gtk.STOCK_EDIT, self.editEventClicked, winTitle, event, groupId, )) ### moveToItem = labelStockMenuItem( _('Move to %s')%'...', None,## FIXME ) moveToMenu = gtk.Menu() for newGroup in ui.eventGroups: if newGroup.id == group.id: continue if not newGroup.enable: continue if event.name in newGroup.acceptsEventTypes: newGroupItem = menuItemFromEventGroup(newGroup) newGroupItem.connect( 'activate', self.moveEventToGroupFromMenu, event, group, newGroup, ) moveToMenu.add(newGroupItem) moveToItem.set_submenu(moveToMenu) menu.add(moveToItem) ### if not event.isSingleOccur: newEventType = 'allDayTask' if occurData['is_allday'] else 'task' copyOccurItem = labelStockMenuItem( _('Copy as %s to...') % event_lib.classes.event.byName[newEventType].desc,## FIXME None, ) copyOccurMenu = gtk.Menu() for newGroup in ui.eventGroups: if not newGroup.enable: continue if newEventType in newGroup.acceptsEventTypes: newGroupItem = menuItemFromEventGroup(newGroup) newGroupItem.connect( 'activate', self.copyOccurToGroupFromMenu, newGroup, newEventType, event, occurData, ) copyOccurMenu.add(newGroupItem) copyOccurItem.set_submenu(copyOccurMenu) menu.add(copyOccurItem) ### menu.add(gtk.SeparatorMenuItem()) ### menu.add(labelImageMenuItem( _('Move to %s') % ui.eventTrash.title, ui.eventTrash.icon, self.moveEventToTrash, event, groupId, )) #### menu.show_all() menu.popup(None, None, None, 3, 0) ui.updateFocusTime()
def genRightClickMenu(self, path): ## how about multi-selection? FIXME ## and Select _All menu item obj_list = self.getObjsByPath(path) #print(len(obj_list)) menu = gtk.Menu() if len(obj_list)==1: group = obj_list[0] if group.name == 'trash': #print('right click on trash', group.title) menu.add(labelStockMenuItem( 'Edit', gtk.STOCK_EDIT, self.editTrash, )) menu.add(labelStockMenuItem( 'Empty Trash', gtk.STOCK_CLEAR, self.emptyTrash, )) #menu.add(gtk.SeparatorMenuItem()) #menu.add(labelStockMenuItem( # 'Add New Group', # gtk.STOCK_NEW, # self.addGroupBeforeSelection, #))## FIXME else: #print('right click on group', group.title) menu.add(labelStockMenuItem( 'Edit', gtk.STOCK_EDIT, self.editGroupFromMenu, path, )) eventTypes = group.acceptsEventTypes if eventTypes is None: eventTypes = event_lib.classes.event.names if len(eventTypes) > 3: menu.add(labelStockMenuItem( _('Add Event'), gtk.STOCK_ADD, self.addGenericEventToGroupFromMenu, path, group, )) else: for eventType in eventTypes: #if eventType == 'custom':## FIXME # desc = _('Add ') + _('Event') #else: label = _('Add ') + event_lib.classes.event.byName[eventType].desc menu.add(labelStockMenuItem( label, gtk.STOCK_ADD, self.addEventToGroupFromMenu, path, group, eventType, label, )) pasteItem = labelStockMenuItem( 'Paste Event', gtk.STOCK_PASTE, self.pasteEventFromMenu, path, ) menu.add(pasteItem) pasteItem.set_sensitive(self.canPasteToGroup(group)) ## menu.add(gtk.SeparatorMenuItem()) #menu.add(labelStockMenuItem( # 'Add New Group', # gtk.STOCK_NEW, # self.addGroupBeforeGroup, # path, #))## FIXME menu.add(labelStockMenuItem( 'Duplicate', gtk.STOCK_COPY, self.duplicateGroupFromMenu, path, )) ### dupAllItem = labelStockMenuItem( 'Duplicate with All Events', gtk.STOCK_COPY, self.duplicateGroupWithEventsFromMenu, path, ) menu.add(dupAllItem) dupAllItem.set_sensitive(bool(group.idList)) ### menu.add(gtk.SeparatorMenuItem()) menu.add(labelStockMenuItem( 'Delete Group', gtk.STOCK_DELETE, self.deleteGroupFromMenu, path, )) menu.add(gtk.SeparatorMenuItem()) ## #menu.add(labelStockMenuItem( # 'Move Up', # gtk.STOCK_GO_UP, # self.moveUpFromMenu, # path, #)) #menu.add(labelStockMenuItem( # 'Move Down', # gtk.STOCK_GO_DOWN, # self.moveDownFromMenu, # path, #)) ## menu.add(labelStockMenuItem( _('Export'), gtk.STOCK_CONVERT, self.groupExportFromMenu, group, )) ### sortItem = labelStockMenuItem( _('Sort Events'), gtk.STOCK_SORT_ASCENDING, self.groupSortFromMenu, path, ) menu.add(sortItem) sortItem.set_sensitive(bool(group.idList)) ### convertItem = labelStockMenuItem( _('Convert Calendar Type'), gtk.STOCK_CONVERT, self.groupConvertModeFromMenu, group, ) menu.add(convertItem) convertItem.set_sensitive(bool(group.idList)) ### #if group.remoteIds: # account = ui.eventAccounts[group.remoteIds[0]] # menu.add(labelImageMenuItem( # _('Synchronize with %s') % account.title, # gtk.STOCK_REFRESH, # self.syncGroup, # path, #)) ### for newGroupType in group.canConvertTo: menu.add(labelStockMenuItem( _('Convert to %s')%event_lib.classes.group.byName[newGroupType].desc, None, self.groupConvertTo, group, newGroupType, )) ### bulkItem = labelStockMenuItem( _('Bulk Edit Events'), gtk.STOCK_EDIT, self.groupBulkEditFromMenu, group, path, ) menu.add(bulkItem) bulkItem.set_sensitive(bool(group.idList)) ### for actionName, actionFuncName in group.actions: menu.add(labelStockMenuItem( _(actionName), None, self.groupActionClicked, group, actionFuncName, )) elif len(obj_list) == 2: group, event = obj_list #print('right click on event', event.summary) if group.name != 'trash': menu.add(labelStockMenuItem( 'Edit', gtk.STOCK_EDIT, self.editEventFromMenu, path, )) #### moveToItem = labelStockMenuItem( _('Move to %s')%'...', None,## FIXME ) moveToMenu = gtk.Menu() for new_group in ui.eventGroups: if new_group.id == group.id: continue #if not new_group.enable:## FIXME # continue new_groupPath = self.trees.get_path(self.groupIterById[new_group.id]) if event.name in new_group.acceptsEventTypes: new_groupItem = gtk.ImageMenuItem() new_groupItem.set_label(new_group.title) ## image = gtk.Image() image.set_from_pixbuf(newOutlineSquarePixbuf(new_group.color, 20)) new_groupItem.set_image(image) ## new_groupItem.connect( 'activate', self.moveEventToPathFromMenu, path, new_groupPath, ) ## moveToMenu.add(new_groupItem) moveToItem.set_submenu(moveToMenu) menu.add(moveToItem) #### menu.add(gtk.SeparatorMenuItem()) #### menu.add(labelStockMenuItem( 'Cut', gtk.STOCK_CUT, self.cutEvent, path, )) menu.add(labelStockMenuItem( 'Copy', gtk.STOCK_COPY, self.copyEvent, path, )) ## if group.name == 'trash': menu.add(gtk.SeparatorMenuItem()) menu.add(labelStockMenuItem( 'Delete', gtk.STOCK_DELETE, self.deleteEventFromTrash, path, )) else: pasteItem = labelStockMenuItem( 'Paste', gtk.STOCK_PASTE, self.pasteEventFromMenu, path, ) menu.add(pasteItem) pasteItem.set_sensitive(self.canPasteToGroup(group)) ## menu.add(gtk.SeparatorMenuItem()) menu.add(labelImageMenuItem( _('Move to %s')%ui.eventTrash.title, ui.eventTrash.icon, self.moveEventToTrashFromMenu, path, )) else: return menu.show_all() return menu