예제 #1
0
 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()
예제 #2
0
	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
예제 #3
0
 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
예제 #4
0
 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()
예제 #5
0
 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)
예제 #6
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()
예제 #7
0
파일: timeline.py 프로젝트: karoon/starcal2
 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
예제 #8
0
 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
예제 #9
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()
예제 #10
0
파일: main.py 프로젝트: Noori/starcal
 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