Пример #1
0
	def onConfigChange(self, *a, **kw):
		ud.BaseCalObj.onConfigChange(self, *a, **kw)
		###
		if not self.isLoaded:
			if self.get_property("visible"):
				self.waitingDo(self.reloadEvents)## FIXME
			return
		###
		for action, eid, gid, path in ui.eventDiff:
			if action == "-":
				eventIter = self.eventsIter.get(eid)
				if eventIter is None:
					if gid in self.loadedGroupIds:
						print(
							"trying to delete non-existing event row, " +
							"eid=%s, path=%s" % (eid, path)
						)
				else:
					self.trees.remove(eventIter)
			elif action == "+":
				if gid in self.loadedGroupIds:
					try:
						parentIndex, eventIndex = path
					except ValueError as e:
						raise RuntimeError("invalid path = %r" % path)
					#print(gid, self.loadedGroupIds, parentIndex)
					parentIter = self.trees.get_iter((parentIndex,))
					event = ui.getEvent(gid, eid)
					self.insertEventRow(parentIter, eventIndex, event)
			elif action == "e":
				eventIter = self.eventsIter.get(eid)
				if eventIter is None:
					if gid in self.loadedGroupIds:
						print(
							"trying to edit non-existing event row, " +
							"eid=%s, path=%s" % (eid, path)
						)
				else:
					event = ui.getEvent(gid, eid)
					self.updateEventRowByIter(event, eventIter)
		ui.eventDiff.clear()
		###
		for gid in ui.changedGroups:
			group = ui.eventGroups[gid]
			groupIter = self.groupIterById[gid]
			for i, value in enumerate(self.getGroupRow(group)):
				self.trees.set_value(groupIter, i, value)
		ui.changedGroups = []
		###
		for gid in ui.reloadGroups:
			self.reloadGroupEvents(gid)
		ui.reloadGroups = []
		###
		if ui.reloadTrash:
			if self.trashIter:
				self.trees.remove(self.trashIter)
			self.appendTrash()
		ui.reloadTrash = False
Пример #2
0
	def onConfigChange(self, *a, **kw):
		ud.BaseCalObj.onConfigChange(self, *a, **kw)
		###
		if not self.isLoaded:
			if self.get_property("visible"):
				self.waitingDo(self.reloadEvents)## FIXME
			return
		###
		for action, eid, gid, path in ui.eventDiff:
			if action == "-":
				eventIter = self.eventsIter.get(eid)
				if eventIter is None:
					if gid in self.loadedGroupIds:
						print(
							"trying to delete non-existing event row, " +
							"eid=%s, path=%s" % (eid, path)
						)
				else:
					self.trees.remove(eventIter)
			elif action == "+":
				if gid in self.loadedGroupIds:
					try:
						parentIndex, eventIndex = path
					except ValueError as e:
						raise RuntimeError("invalid path = %r" % path)
					#print(gid, self.loadedGroupIds, parentIndex)
					parentIter = self.trees.get_iter((parentIndex,))
					event = ui.getEvent(gid, eid)
					self.insertEventRow(parentIter, eventIndex, event)
			elif action == "e":
				eventIter = self.eventsIter.get(eid)
				if eventIter is None:
					if gid in self.loadedGroupIds:
						print(
							"trying to edit non-existing event row, " +
							"eid=%s, path=%s" % (eid, path)
						)
				else:
					event = ui.getEvent(gid, eid)
					self.updateEventRowByIter(event, eventIter)
		ui.eventDiff.clear()
		###
		for gid in ui.changedGroups:
			group = ui.eventGroups[gid]
			groupIter = self.groupIterById[gid]
			for i, value in enumerate(self.getGroupRow(group)):
				self.trees.set_value(groupIter, i, value)
		ui.changedGroups = []
		###
		for gid in ui.reloadGroups:
			self.reloadGroupEvents(gid)
		ui.reloadGroups = []
		###
		if ui.reloadTrash:
			if self.trashIter:
				self.trees.remove(self.trashIter)
			self.appendTrash()
		ui.reloadTrash = False
Пример #3
0
	def onConfigChange(self, *a, **kw):
		ud.BaseCalObj.onConfigChange(self, *a, **kw)
		###
		if not self.isLoaded:
			if self.get_property('visible'):
				self.waitingDo(self.reloadEvents)## FIXME
			return
		###
		for action, eid, gid, path in ui.eventDiff:
			if action == '-':
				try:
					eventIter = self.eventsIter[eid]
				except KeyError:
					if gid in self.loadedGroupIds:
						print('trying to delete non-existing event row, eid=%s, path=%s'%(eid, path))
				else:
					self.trees.remove(eventIter)
			elif action == '+':
				if gid in self.loadedGroupIds:
					parentIndex, eventIndex = path
					#print(gid, self.loadedGroupIds, parentIndex)
					parentIter = self.trees.get_iter((parentIndex,))
					event = ui.getEvent(gid, eid)
					self.insertEventRow(parentIter, eventIndex, event)
			elif action == 'e':
				try:
					eventIter = self.eventsIter[eid]
				except KeyError:
					if gid in self.loadedGroupIds:
						print('trying to edit non-existing event row, eid=%s, path=%s'%(eid, path))
				else:
					event = ui.getEvent(gid, eid)
					self.updateEventRowByIter(event, eventIter)
		###
		for gid in ui.changedGroups:
			group = ui.eventGroups[gid]
			groupIter = self.groupIterById[gid]
			for i, value in enumerate(self.getGroupRow(group)):
				self.trees.set_value(groupIter, i, value)
		ui.changedGroups = []
		###
		for gid in ui.reloadGroups:
			self.reloadGroupEvents(gid)
		ui.reloadGroups = []
		###
		if ui.reloadTrash:
			if self.trashIter:
				self.trees.remove(self.trashIter)
			self.appendTrash()
		ui.reloadTrash = False
Пример #4
0
	def editEventFromMenu(self, item, groupId, eventId):
		from scal3.ui_gtk.event.editor import EventEditorDialog
		event = ui.getEvent(groupId, eventId)
		group = ui.eventGroups[groupId]
		parent = self
		event = EventEditorDialog(
			event,
			title=_("Edit ") + event.desc,
			parent=parent,
		).run()
		if event is None:
			return
		ui.eventDiff.add("e", event)
		self.onConfigChange()
Пример #5
0
	def editEventFromMenu(self, item, groupId, eventId):
		from scal3.ui_gtk.event.editor import EventEditorDialog
		event = ui.getEvent(groupId, eventId)
		group = ui.eventGroups[groupId]
		parent = self
		event = EventEditorDialog(
			event,
			title=_("Edit ") + event.desc,
			transient_for=parent,
		).run()
		if event is None:
			return
		ui.eventDiff.add("e", event)
		self.onConfigChange()
Пример #6
0
 def onEventLabelPopup(self, label, menu, occurData):
     from scal3.ui_gtk.event.utils import menuItemFromEventGroup
     if event_lib.readOnly:
         return
     # instead of creating a new menu, we should remove the current items from current menu
     # but here we will keep the items from ReadOnlyLabel
     ####
     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()
     label.tmpMenu = menu
     ui.updateFocusTime()
Пример #7
0
	def onEventLabelPopup(self, label, menu, occurData):
		from scal3.ui_gtk.event.utils import menuItemFromEventGroup
		if event_lib.allReadOnly:
			return
		# instead of creating a new menu, we should remove the current items from current menu
		# but here we will keep the items from ReadOnlyLabel
		####
		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()
			disabledGroupsMenu = gtk.Menu()
			for newGroup in ui.eventGroups:
				if newGroup.id == group.id:
					continue
				if event.name not in newGroup.acceptsEventTypes:
					continue
				newGroupItem = menuItemFromEventGroup(newGroup)
				newGroupItem.connect(
					"activate",
					self.moveEventToGroupFromMenu,
					event,
					group,
					newGroup,
				)
				if newGroup.enable:
					moveToMenu.add(newGroupItem)
				else:
					disabledGroupsMenu.add(newGroupItem)

			###
			disabledGroupsItem = gtk.MenuItem()
			disabledGroupsItem.set_label(_("Disabled"))
			disabledGroupsItem.set_submenu(disabledGroupsMenu)
			moveToMenu.add(disabledGroupsItem)
			###
			moveToItem.set_submenu(moveToMenu)
			menu.add(moveToItem)
			###
			if not event.isSingleOccur:
				newEventType = "allDayTask" if occurData["is_allday"] else "task"
				copyOccurItem = labelStockMenuItem(
					_(  # FIXME
						"Copy as %s to..."
					) % event_lib.classes.event.byName[newEventType].desc,
					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()
		label.tmpMenu = menu
		ui.updateFocusTime()
Пример #8
0
 def onEventLabelPopup(self, label, menu, occurData):
     from scal3.ui_gtk.event.utils import menuItemFromEventGroup
     if event_lib.readOnly:
         return
     menu = gtk.Menu()
     label.labelMenuAddCopyItems(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()
     label.tmpMenu = menu
     menu.popup(None, None, None, None, 3, 0)
     ui.updateFocusTime()