Ejemplo n.º 1
0
def addStartup():
    if osName=='win':
        from scal3.windows import winMakeShortcut
        makeDir(winStartupDir)
        #fname = APP_NAME + ('-qt' if uiName=='qt' else '') + '.pyw'
        fname = core.COMMAND + '.pyw'
        fpath = join(rootDir, fname)
        #open(winStartupFile, 'w').write('execfile(%r, {"__file__":%r})'%(fpath, fpath))
        try:
            winMakeShortcut(fpath, winStartupFile)
        except:
            return False
        else:
            return True
    elif isdir('%s/.config'%homeDir):## osName in ('linux', 'mac') ## maybe Gnome/KDE on Solaris, *BSD, ...
        text = '''[Desktop Entry]
Type=Application
Name=%s %s
Icon=%s
Exec=%s'''%(core.APP_DESC, core.VERSION, APP_NAME, core.COMMAND)## double quotes needed when the exec path has space
        makeDir(comDeskDir)
        try:
            fp = open(comDesk, 'w')
        except:
            core.myRaise(__file__)
            return False
        else:
            fp.write(text)
            return True
    elif osName=='mac':## FIXME
        pass
    return False
Ejemplo n.º 2
0
def addStartup():
    if osName == 'win':
        from scal3.windows import winMakeShortcut
        makeDir(winStartupDir)
        #fname = APP_NAME + ('-qt' if uiName=='qt' else '') + '.pyw'
        fname = core.COMMAND + '.pyw'
        fpath = join(rootDir, fname)
        #open(winStartupFile, 'w').write('execfile(%r, {"__file__":%r})'%(fpath, fpath))
        try:
            winMakeShortcut(fpath, winStartupFile)
        except:
            return False
        else:
            return True
    elif isdir(
            '%s/.config' % homeDir
    ):  ## osName in ('linux', 'mac') ## maybe Gnome/KDE on Solaris, *BSD, ...
        text = '''[Desktop Entry]
Type=Application
Name=%s %s
Icon=%s
Exec=%s''' % (core.APP_DESC, core.VERSION, APP_NAME, core.COMMAND
              )  ## double quotes needed when the exec path has space
        makeDir(comDeskDir)
        try:
            fp = open(comDesk, 'w')
        except:
            core.myRaise(__file__)
            return False
        else:
            fp.write(text)
            return True
    elif osName == 'mac':  ## FIXME
        pass
    return False
Ejemplo n.º 3
0
 def addClicked(self, button):
     fcd = gtk.FileChooserDialog(
         buttons=(
             toBytes(_("_OK")),
             gtk.ResponseType.OK,
             toBytes(_("_Cancel")),
             gtk.ResponseType.CANCEL,
         ),
         title=_("Add File"),
     )
     fcd.set_local_only(True)
     fcd.connect("response", lambda w, e: fcd.hide())
     if fcd.run() == gtk.ResponseType.OK:
         from shutil import copy
         fpath = fcd.get_filename()
         fname = split(fpath)[-1]
         dstDir = self.event.filesDir
         ## os.makedirs(dstDir, exist_ok=True)## only on new pythons FIXME
         try:
             os.makedirs(dstDir)
         except:
             myRaise()
         copy(fpath, join(dstDir, fname))
         self.event.files.append(fname)
         self.newFiles.append(fname)
         self.showFile(fname)
Ejemplo n.º 4
0
	def _do_onGroupModify(self, group):
		group.afterModify()
		group.save()## FIXME
		try:
			if group.name == "universityTerm":## FIXME
				groupIter = self.groupIterById[group.id]
				n = self.trees.iter_n_children(groupIter)
				for i in range(n):
					eventIter = self.trees.iter_nth_child(groupIter, i)
					eid = self.trees.get(eventIter, 0)[0]
					self.trees.set(eventIter, 2, group[eid].summary)
		except:
			myRaise()
Ejemplo n.º 5
0
	def _do_onGroupModify(self, group):
		group.afterModify()
		group.save()## FIXME
		try:
			if group.name == 'universityTerm':## FIXME
				groupIter = self.groupIterById[group.id]
				n = self.trees.iter_n_children(groupIter)
				for i in range(n):
					eventIter = self.trees.iter_nth_child(groupIter, i)
					eid = self.trees.get(eventIter, 0)[0]
					self.trees.set(eventIter, 2, group[eid].summary)
		except:
			myRaise()
Ejemplo n.º 6
0
def addStartup():
    if osName == "win":
        from scal3.windows import winMakeShortcut, winStartupFile
        makeDir(winStartupDir)
        #fname = APP_NAME + ("-qt" if uiName=="qt" else "") + ".pyw"
        fname = core.COMMAND + ".pyw"
        fpath = join(rootDir, fname)
        #open(winStartupFile, "w").write(
        #	"execfile(%r, {"__file__":%r})"%(fpath, fpath)
        #)
        try:
            winMakeShortcut(fpath, winStartupFile)
        except:
            return False
        else:
            return True
    elif isdir("%s/.config" % homeDir):
        # osName in ("linux", "mac")
        # maybe Gnome/KDE on Solaris, *BSD, ...
        text = """[Desktop Entry]
Type=Application
Name=%s %s
Icon=%s
Exec=%s""" % (
            core.APP_DESC,
            core.VERSION,
            APP_NAME,
            core.COMMAND,
        )
        # double quotes needed when the exec path has space
        makeDir(comDeskDir)
        try:
            fp = open(comDesk, "w")
        except:
            core.myRaise(__file__)
            return False
        else:
            fp.write(text)
            return True
    elif osName == "mac":  # FIXME
        pass
    return False
Ejemplo n.º 7
0
def addStartup():
	if osName == "win":
		from scal3.windows import winMakeShortcut, winStartupFile
		makeDir(winStartupDir)
		#fname = APP_NAME + ("-qt" if uiName=="qt" else "") + ".pyw"
		fname = core.COMMAND + ".pyw"
		fpath = join(rootDir, fname)
		#open(winStartupFile, "w").write(
		#	"execfile(%r, {"__file__":%r})"%(fpath, fpath)
		#)
		try:
			winMakeShortcut(fpath, winStartupFile)
		except:
			return False
		else:
			return True
	elif isdir("%s/.config" % homeDir):
		# osName in ("linux", "mac")
		# maybe Gnome/KDE on Solaris, *BSD, ...
		text = """[Desktop Entry]
Type=Application
Name=%s %s
Icon=%s
Exec=%s""" % (
			core.APP_DESC,
			core.VERSION,
			APP_NAME,
			core.COMMAND,
		)
		# double quotes needed when the exec path has space
		makeDir(comDeskDir)
		try:
			fp = open(comDesk, "w")
		except:
			core.myRaise(__file__)
			return False
		else:
			fp.write(text)
			return True
	elif osName == "mac":  # FIXME
		pass
	return False
Ejemplo n.º 8
0
 def addClicked(self, button):
     fcd = gtk.FileChooserDialog(
         buttons=(
             toBytes(_('_OK')), gtk.ResponseType.OK,
             toBytes(_('_Cancel')), gtk.ResponseType.CANCEL,
         ),
         title=_('Add File'),
     )
     fcd.set_local_only(True)
     fcd.connect('response', lambda w, e: fcd.hide())
     if fcd.run() == gtk.ResponseType.OK:
         from shutil import copy
         fpath = fcd.get_filename()
         fname = split(fpath)[-1]
         dstDir = self.event.filesDir
         ## os.makedirs(dstDir, exist_ok=True)## only on new pythons FIXME
         try:
             os.makedirs(dstDir)
         except:
             myRaise()
         copy(fpath, join(dstDir, fname))
         self.event.files.append(fname)
         self.newFiles.append(fname)
         self.showFile(fname)
Ejemplo n.º 9
0
    def apply(self, widget=None):
        from scal3.ui_gtk.font_utils import gfontDecode
        ####### FIXME
        #print("fontDefault = %s" % ui.fontDefault)
        ui.fontDefault = gfontDecode(ud.settings.get_property("gtk-font-name"))
        #print("fontDefault = %s" % ui.fontDefault)
        ###################### Updating pref variables #####################
        for opt in self.iterAllPrefItems():
            opt.updateVar()
        ###### DB Manager (Plugin Manager)
        index = []
        for row in self.plugTreestore:
            plugI = row[0]
            enable = row[1]
            show_date = row[2]
            index.append(plugI)
            plug = core.allPlugList[plugI]
            if plug.loaded:
                try:
                    plug.enable = enable
                    plug.show_date = show_date
                except:
                    core.myRaise(__file__)
                    print(i, core.plugIndex)
            else:
                if enable:
                    plug = plugin_man.loadPlugin(plug.file, enable=True)
                    if plug:
                        assert plug.loaded
                    core.allPlugList[plugI] = plug
        core.plugIndex = index
        core.updatePlugins()
        ######
        first = self.comboFirstWD.get_active()
        if first == 7:
            core.firstWeekDayAuto = True
            try:
                core.firstWeekDay = core.getLocaleFirstWeekDay()
            except:
                pass
        else:
            core.firstWeekDayAuto = False
            core.firstWeekDay = first
        ######
        mode = self.comboWeekYear.get_active()
        if mode == 8:
            core.weekNumberModeAuto = True
            core.weekNumberMode = core.getLocaleweekNumberMode()
        else:
            core.weekNumberModeAuto = False
            core.weekNumberMode = mode
        ######
        ui.cellCache.clear()  # Very important
        # ^ specially when calTypes.primary will be changed
        ######
        ud.updateFormatsBin()
        ######################## Saving Preferences #######################
        for mod in calTypes:
            mod.save()
        ##################### Saving locale config
        locale_man.saveConf()
        ##################### Saving core config
        core.version = core.VERSION
        core.saveConf()
        del core.version
        ##################### Saving ui config
        ui.prefPagesOrder = tuple(
            [self.notebook.page_num(page) for page in self.prefPages])
        ui.saveConf()
        ##################### Saving gtk_ud config
        ud.saveConf()
        ######################### Updating GUI ###########################
        ud.windowList.onConfigChange()
        if ui.mainWin:
            """
			if ui.bgUseDesk and ui.bgColor[3] == 255:
				msg = gtk.MessageDialog(
					buttons=gtk.ButtonsType.OK_CANCEL,
					message_format=_(
						"If you want to have a transparent calendar " +
						"(and see your desktop)," +
						"change the opacity of calendar background color!"
					)
				)
				if msg.run() == gtk.ResponseType.OK:
					self.colorbBg.emit("clicked")
				msg.destroy()
			"""
            if ui.checkNeedRestart():
                d = gtk.Dialog(
                    title=_("Restart " + core.APP_DESC),
                    parent=self,
                    flags=(gtk.DialogFlags.MODAL
                           | gtk.DialogFlags.DESTROY_WITH_PARENT),
                    buttons=(gtk.STOCK_CANCEL, 0),
                )
                d.set_keep_above(True)
                label = gtk.Label(
                    _("Some preferences need restarting %s to apply." %
                      core.APP_DESC))
                label.set_line_wrap(True)
                pack(d.vbox, label)
                resBut = d.add_button(_("_Restart"), 1)
                resBut.set_image(
                    gtk.Image.new_from_stock(
                        gtk.STOCK_REFRESH,
                        gtk.IconSize.BUTTON,
                    ))
                resBut.grab_default()
                d.vbox.show_all()
                if d.run() == 1:
                    core.restart()
                else:
                    d.destroy()
Ejemplo n.º 10
0
	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(eventWriteMenuItem(
					"Edit",
					gtk.STOCK_EDIT,
					self.editTrash,
				))
				menu.add(eventWriteMenuItem(
					"Empty Trash",## or use group.title FIXME
					gtk.STOCK_CLEAR,
					self.emptyTrash,
				))
				#menu.add(gtk.SeparatorMenuItem())
				#menu.add(eventWriteMenuItem(
				#	"Add New Group",
				#	gtk.STOCK_NEW,
				#	self.addGroupBeforeSelection,
				#))## FIXME
			else:
				#print("right click on group", group.title)
				menu.add(eventWriteMenuItem(
					"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(eventWriteMenuItem(
						_("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(eventWriteMenuItem(
							label,
							gtk.STOCK_ADD,
							self.addEventToGroupFromMenu,
							path,
							group,
							eventType,
							label,
						))
				pasteItem = eventWriteMenuItem(
					"Paste Event",
					gtk.STOCK_PASTE,
					self.pasteEventFromMenu,
					path,
				)
				menu.add(pasteItem)
				pasteItem.set_sensitive(self.canPasteToGroup(group))
				##
				if group.remoteIds:
					aid, remoteGid = group.remoteIds
					try:
						account = ui.eventAccounts[aid]
					except KeyError:
						myRaise()
					else:
						if account.enable:
							menu.add(gtk.SeparatorMenuItem())
							menu.add(eventWriteMenuItem(
								"Synchronize",
								gtk.STOCK_CONNECT,## or gtk.STOCK_REFRESH FIXME
								self.syncGroupFromMenu,
								path,
								account,
							))
						#else:## FIXME
				##
				menu.add(gtk.SeparatorMenuItem())
				#menu.add(eventWriteMenuItem(
				#	"Add New Group",
				#	gtk.STOCK_NEW,
				#	self.addGroupBeforeGroup,
				#	path,
				#))## FIXME
				menu.add(eventWriteMenuItem(
					"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(
					not group.isReadOnly()
					and bool(group.idList)
				)
				###
				menu.add(gtk.SeparatorMenuItem())
				menu.add(eventWriteMenuItem(
					"Delete Group",
					gtk.STOCK_DELETE,
					self.deleteGroupFromMenu,
					path,
				))
				menu.add(gtk.SeparatorMenuItem())
				##
				#menu.add(eventWriteMenuItem(
				#	"Move Up",
				#	gtk.STOCK_GO_UP,
				#	self.moveUpFromMenu,
				#	path,
				#))
				#menu.add(eventWriteMenuItem(
				#	"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(
					not group.isReadOnly()
					and bool(group.idList)
				)
				###
				convertItem = labelStockMenuItem(
					_("Convert Calendar Type"),
					gtk.STOCK_CONVERT,
					self.groupConvertModeFromMenu,
					group,
				)
				menu.add(convertItem)
				convertItem.set_sensitive(
					not group.isReadOnly()
					and bool(group.idList)
				)
				###
				for newGroupType in group.canConvertTo:
					menu.add(eventWriteMenuItem(
						_(
							"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(
					not group.isReadOnly()
					and bool(group.idList)
				)
				###
				for actionName, actionFuncName in group.actions:
					menu.add(eventWriteMenuItem(
						_(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(eventWriteMenuItem(
					"Edit",
					gtk.STOCK_EDIT,
					self.editEventFromMenu,
					path,
				))
			####
			menu.add(eventWriteImageMenuItem(
				"History",
				"history-24.png",
				self.historyOfEventFromMenu,
				path,
			))
			####
			moveToItem = eventWriteMenuItem(
				_("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 = ImageMenuItem()
					new_groupItem.set_label(new_group.title)
					##
					image = gtk.Image()
					image.set_from_pixbuf(newColorCheckPixbuf(new_group.color, 20, True))
					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(eventWriteMenuItem(
				"Cut",
				gtk.STOCK_CUT,
				self.cutEvent,
				path,
			))
			menu.add(eventWriteMenuItem(
				"Copy",
				gtk.STOCK_COPY,
				self.copyEvent,
				path,
			))
			##
			if group.name == "trash":
				menu.add(gtk.SeparatorMenuItem())
				menu.add(eventWriteMenuItem(
					"Delete",
					gtk.STOCK_DELETE,
					self.deleteEventFromTrash,
					path,
				))
			else:
				pasteItem = eventWriteMenuItem(
					"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
Ejemplo n.º 11
0
	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(eventWriteMenuItem(
					'Edit',
					gtk.STOCK_EDIT,
					self.editTrash,
				))
				menu.add(eventWriteMenuItem(
					'Empty Trash',
					gtk.STOCK_CLEAR,
					self.emptyTrash,
				))
				#menu.add(gtk.SeparatorMenuItem())
				#menu.add(eventWriteMenuItem(
				#	'Add New Group',
				#	gtk.STOCK_NEW,
				#	self.addGroupBeforeSelection,
				#))## FIXME
			else:
				#print('right click on group', group.title)
				menu.add(eventWriteMenuItem(
					'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(eventWriteMenuItem(
						_('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(eventWriteMenuItem(
							label,
							gtk.STOCK_ADD,
							self.addEventToGroupFromMenu,
							path,
							group,
							eventType,
							label,
						))
				pasteItem = eventWriteMenuItem(
					'Paste Event',
					gtk.STOCK_PASTE,
					self.pasteEventFromMenu,
					path,
				)
				menu.add(pasteItem)
				pasteItem.set_sensitive(self.canPasteToGroup(group))
				##
				if group.remoteIds:
					aid, remoteGid = group.remoteIds
					try:
						account = ui.eventAccounts[aid]
					except KeyError:
						myRaise()
					else:
						if account.enable:
							menu.add(gtk.SeparatorMenuItem())
							menu.add(eventWriteMenuItem(
								'Synchronize',
								gtk.STOCK_CONNECT,## or gtk.STOCK_REFRESH FIXME
								self.syncGroupFromMenu,
								path,
								account,
							))
						#else:## FIXME
				##
				menu.add(gtk.SeparatorMenuItem())
				#menu.add(eventWriteMenuItem(
				#	'Add New Group',
				#	gtk.STOCK_NEW,
				#	self.addGroupBeforeGroup,
				#	path,
				#))## FIXME
				menu.add(eventWriteMenuItem(
					'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(not event_lib.readOnly and bool(group.idList))
				###
				menu.add(gtk.SeparatorMenuItem())
				menu.add(eventWriteMenuItem(
					'Delete Group',
					gtk.STOCK_DELETE,
					self.deleteGroupFromMenu,
					path,
				))
				menu.add(gtk.SeparatorMenuItem())
				##
				#menu.add(eventWriteMenuItem(
				#	'Move Up',
				#	gtk.STOCK_GO_UP,
				#	self.moveUpFromMenu,
				#	path,
				#))
				#menu.add(eventWriteMenuItem(
				#	'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(not event_lib.readOnly and bool(group.idList))
				###
				convertItem = labelStockMenuItem(
					_('Convert Calendar Type'),
					gtk.STOCK_CONVERT,
					self.groupConvertModeFromMenu,
					group,
				)
				menu.add(convertItem)
				convertItem.set_sensitive(not event_lib.readOnly and bool(group.idList))
				###
				for newGroupType in group.canConvertTo:
					menu.add(eventWriteMenuItem(
						_('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(not event_lib.readOnly and bool(group.idList))
				###
				for actionName, actionFuncName in group.actions:
					menu.add(eventWriteMenuItem(
						_(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(eventWriteMenuItem(
					'Edit',
					gtk.STOCK_EDIT,
					self.editEventFromMenu,
					path,
				))
			####
			moveToItem = eventWriteMenuItem(
				_('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 = ImageMenuItem()
					new_groupItem.set_label(new_group.title)
					##
					image = gtk.Image()
					image.set_from_pixbuf(newColorCheckPixbuf(new_group.color, 20, True))
					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(eventWriteMenuItem(
				'Cut',
				gtk.STOCK_CUT,
				self.cutEvent,
				path,
			))
			menu.add(eventWriteMenuItem(
				'Copy',
				gtk.STOCK_COPY,
				self.copyEvent,
				path,
			))
			##
			if group.name == 'trash':
				menu.add(gtk.SeparatorMenuItem())
				menu.add(eventWriteMenuItem(
					'Delete',
					gtk.STOCK_DELETE,
					self.deleteEventFromTrash,
					path,
				))
			else:
				pasteItem = eventWriteMenuItem(
					'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
Ejemplo n.º 12
0
	def apply(self, widget=None):
		from scal3.ui_gtk.font_utils import gfontDecode
		####### FIXME
		#print("fontDefault = %s" % ui.fontDefault)
		ui.fontDefault = gfontDecode(
			ud.settings.get_property("gtk-font-name")
		)
		#print("fontDefault = %s" % ui.fontDefault)
		###################### Updating pref variables #####################
		for opt in self.iterAllPrefItems():
			opt.updateVar()
		###### DB Manager (Plugin Manager)
		index = []
		for row in self.plugTreestore:
			plugI = row[0]
			enable = row[1]
			show_date = row[2]
			index.append(plugI)
			plug = core.allPlugList[plugI]
			if plug.loaded:
				try:
					plug.enable = enable
					plug.show_date = show_date
				except:
					core.myRaise(__file__)
					print(i, core.plugIndex)
			else:
				if enable:
					plug = plugin_man.loadPlugin(plug.file, enable=True)
					if plug:
						assert plug.loaded
					core.allPlugList[plugI] = plug
		core.plugIndex = index
		core.updatePlugins()
		######
		first = self.comboFirstWD.get_active()
		if first == 7:
			core.firstWeekDayAuto = True
			try:
				core.firstWeekDay = core.getLocaleFirstWeekDay()
			except:
				pass
		else:
			core.firstWeekDayAuto = False
			core.firstWeekDay = first
		######
		mode = self.comboWeekYear.get_active()
		if mode == 8:
			core.weekNumberModeAuto = True
			core.weekNumberMode = core.getLocaleweekNumberMode()
		else:
			core.weekNumberModeAuto = False
			core.weekNumberMode = mode
		######
		ui.cellCache.clear()  # Very important
		# ^ specially when calTypes.primary will be changed
		######
		ud.updateFormatsBin()
		######################## Saving Preferences #######################
		for mod in calTypes:
			mod.save()
		##################### Saving locale config
		locale_man.saveConf()
		##################### Saving core config
		core.version = core.VERSION
		core.saveConf()
		del core.version
		##################### Saving ui config
		ui.prefPagesOrder = tuple([
			self.notebook.page_num(page) for page in self.prefPages
		])
		ui.saveConf()
		##################### Saving gtk_ud config
		ud.saveConf()
		######################### Updating GUI ###########################
		ud.windowList.onConfigChange()
		if ui.mainWin:
			"""
			if ui.bgUseDesk and ui.bgColor[3] == 255:
				msg = gtk.MessageDialog(
					buttons=gtk.ButtonsType.OK_CANCEL,
					message_format=_(
						"If you want to have a transparent calendar " +
						"(and see your desktop)," +
						"change the opacity of calendar background color!"
					)
				)
				if msg.run() == gtk.ResponseType.OK:
					self.colorbBg.emit("clicked")
				msg.destroy()
			"""
			if ui.checkNeedRestart():
				d = gtk.Dialog(
					title=_("Need Restart " + core.APP_DESC),
					parent=self,
					flags=(
						gtk.DialogFlags.MODAL |
						gtk.DialogFlags.DESTROY_WITH_PARENT
					),
					buttons=(gtk.STOCK_CANCEL, 0),
				)
				d.set_keep_above(True)
				label = gtk.Label(_(
					"Some preferences need for restart %s to apply."
					% core.APP_DESC
				))
				label.set_line_wrap(True)
				pack(d.vbox, label)
				resBut = d.add_button(_("_Restart"), 1)
				resBut.set_image(gtk.Image.new_from_stock(
					gtk.STOCK_REFRESH,
					gtk.IconSize.BUTTON,
				))
				resBut.grab_default()
				d.vbox.show_all()
				if d.run() == 1:
					core.restart()
				else:
					d.destroy()