Example #1
0
def importEvent(gevent, group):
    #open('/tmp/gevent.js', 'a').write('%s\n\n'%pformat(gevent))
    icsData = [
        ('DTSTART', encodeIcsStartEnd(gevent['start'])),
        ('DTEND', encodeIcsStartEnd(gevent['end'])),
    ]
    ##
    recurring = False
    if 'recurrence' in gevent:
        recurring = True
        for recStr in gevent['recurrence']:
            key, value = recStr.upper().split(':')## multi line? FIXME
            icsData.append((key, value))
    try:
        eventType = gevent['extendedProperties']['shared']['starcal_type']
    except KeyError:
        if recurring:
            eventType = 'custom'
        else:
            eventType = 'task'
    ##
    event = group.createEvent(eventType)
    event.mode = DATE_GREG ## FIXME
    if not event.setIcsData(dict(icsData)):
        return
    event.summary = toBytes(gevent['summary'])
    event.description = toBytes(gevent.get('description', ''))
    if 'reminders' in gevent:
        try:
            minutes = gevent['reminders']['overrides']['minutes']
        except KeyError:
            myRaise()## FIXME
        else:
            self.notifyBefore = (minutes, 60)
    return event
Example #2
0
def importEvent(gevent, group):
	# open("/tmp/gevent.js", "a").write("%s\n\n"%pformat(gevent))
	icsData = [
		("DTSTART", encodeIcsStartEnd(gevent["start"])),
		("DTEND", encodeIcsStartEnd(gevent["end"])),
	]

	recurring = False
	if "recurrence" in gevent:
		recurring = True
		for recStr in gevent["recurrence"]:
			key, value = recStr.upper().split(":")  # multi line? FIXME
			icsData.append((key, value))
	try:
		eventType = gevent["extendedProperties"]["shared"]["starcal_type"]
	except KeyError:
		if recurring:
			eventType = "custom"
		else:
			eventType = "task"

	event = group.createEvent(eventType)
	event.mode = DATE_GREG  # FIXME
	if not event.setIcsData(dict(icsData)):
		return
	event.summary = toBytes(gevent["summary"])
	event.description = toBytes(gevent.get("description", ""))
	if "reminders" in gevent:
		try:
			minutes = gevent["reminders"]["overrides"]["minutes"]
		except KeyError:
			myRaise()  # FIXME
		else:
			self.notifyBefore = (minutes, 60)
	return event
Example #3
0
def importEvent(gevent, group):
    #open('/tmp/gevent.js', 'a').write('%s\n\n'%pformat(gevent))
    icsData = [
        ('DTSTART', encodeIcsStartEnd(gevent['start'])),
        ('DTEND', encodeIcsStartEnd(gevent['end'])),
    ]
    ##
    recurring = False
    if 'recurrence' in gevent:
        recurring = True
        for recStr in gevent['recurrence']:
            key, value = recStr.upper().split(':')  ## multi line? FIXME
            icsData.append((key, value))
    try:
        eventType = gevent['extendedProperties']['shared']['starcal_type']
    except KeyError:
        if recurring:
            eventType = 'custom'
        else:
            eventType = 'task'
    ##
    event = group.createEvent(eventType)
    event.mode = DATE_GREG  ## FIXME
    if not event.setIcsData(dict(icsData)):
        return
    event.summary = toBytes(gevent['summary'])
    event.description = toBytes(gevent.get('description', ''))
    if 'reminders' in gevent:
        try:
            minutes = gevent['reminders']['overrides']['minutes']
        except KeyError:
            myRaise()  ## FIXME
        else:
            self.notifyBefore = (minutes, 60)
    return event
Example #4
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)
Example #5
0
def setClipboard(text, clipboard=None):
    if not clipboard:
        clipboard = gtk.Clipboard.get(gdk.SELECTION_CLIPBOARD)
    clipboard.set_text(
        toStr(text),
        len(toBytes(text)),
    )
Example #6
0
def setClipboard(text, clipboard=None):
    if not clipboard:
        clipboard = gtk.Clipboard.get(gdk.SELECTION_CLIPBOARD)
    clipboard.set_text(
        toStr(text),
        len(toBytes(text)),
    )
Example #7
0
	def statusIconUpdateIcon(self, ddate):## FIXME
		from scal3.utils import toBytes
		imagePath = ui.statusIconImageHoli if ui.todayCell.holiday else ui.statusIconImage
		ext = os.path.splitext(imagePath)[1][1:].lower()
		loader = GdkPixbuf.PixbufLoader.new_with_type(ext)
		if ui.statusIconFixedSizeEnable:
			try:
				width, height = ui.statusIconFixedSizeWH
				loader.set_size(width, height)
			except:
				myRaise()
		data = open(imagePath, 'rb').read()
		if ext == 'svg':
			dayNum = locale_man.numEncode(
				ddate[2],
				mode=calTypes.primary,  # FIXME
			)
			if ui.statusIconFontFamilyEnable:
				if ui.statusIconFontFamily:
					family = ui.statusIconFontFamily
				else:
					family = ui.getFont()[0]
				dayNum = '<tspan style="font-family:%s">%s</tspan>'%(family, dayNum)
			data = data.replace(
				b'TX',
				toBytes(dayNum),
			)
		loader.write(data)
		loader.close()
		pixbuf = loader.get_pixbuf()
		self.sicon.set_from_pixbuf(pixbuf)
Example #8
0
 def statusIconUpdateIcon(self, ddate):## FIXME
     from scal3.utils import toBytes
     imagePath = ui.statusIconImageHoli if ui.todayCell.holiday else ui.statusIconImage
     ext = os.path.splitext(imagePath)[1][1:].lower()
     loader = GdkPixbuf.PixbufLoader.new_with_type(ext)
     if ui.statusIconFixedSizeEnable:
         try:
             width, height = ui.statusIconFixedSizeWH
             loader.set_size(width, height)
         except:
             myRaise()
     data = open(imagePath).read()
     if ext == 'svg':
         dayNum = _(ddate[2])
         if ui.statusIconFontFamilyEnable:
             if ui.statusIconFontFamily:
                 family = ui.statusIconFontFamily
             else:
                 family = ui.getFont()[0]
             dayNum = '<tspan style="font-family:%s">%s</tspan>'%(family, dayNum)
         data = data.replace(
             'TX',
             dayNum,
         )
     data = toBytes(data)
     loader.write(data)
     loader.close()
     pixbuf = loader.get_pixbuf()
     self.sicon.set_from_pixbuf(pixbuf)
Example #9
0
File: ui.py Project: ilius/starcal
def duplicateGroupTitle(group):
    title = toBytes(group.title)
    titleList = [toBytes(g.title) for g in eventGroups]
    parts = title.split("#")
    try:
        index = int(parts[-1])
        title = "#".join(parts[:-1])
    except:
        # myRaise()
        index = 1
    index += 1
    while True:
        newTitle = title + "#%d" % index
        if newTitle not in titleList:
            group.title = newTitle
            return
        index += 1
Example #10
0
def newDndFontNamePixbuf(name):
    imagePath = join(rootDir, 'svg', 'dnd-font.svg')
    loader = GdkPixbuf.PixbufLoader.new_with_type('svg')
    data = open(imagePath).read()
    data = data.replace('FONTNAME', name)
    data = toBytes(data)
    loader.write(data)
    loader.close()
    pixbuf = loader.get_pixbuf()
    return pixbuf
Example #11
0
def newDndFontNamePixbuf(name):
    imagePath = join(rootDir, "svg", "dnd-font.svg")
    loader = GdkPixbuf.PixbufLoader.new_with_type("svg")
    data = open(imagePath).read()
    data = data.replace("FONTNAME", name)
    data = toBytes(data)
    loader.write(data)
    loader.close()
    pixbuf = loader.get_pixbuf()
    return pixbuf
Example #12
0
def newDndDatePixbuf(ymd):
    imagePath = join(rootDir, "svg", "dnd-date.svg")
    loader = GdkPixbuf.PixbufLoader.new_with_type("svg")
    data = open(imagePath).read()
    data = data.replace("YYYY", "%.4d" % ymd[0])
    data = data.replace("MM", "%.2d" % ymd[1])
    data = data.replace("DD", "%.2d" % ymd[2])
    data = toBytes(data)
    loader.write(data)
    loader.close()
    pixbuf = loader.get_pixbuf()
    return pixbuf
Example #13
0
def newDndDatePixbuf(ymd):
	imagePath = join(rootDir, 'svg', 'dnd-date.svg')
	loader = GdkPixbuf.PixbufLoader.new_with_type('svg')
	data = open(imagePath).read()
	data = data.replace('YYYY', '%.4d'%ymd[0])
	data = data.replace('MM', '%.2d'%ymd[1])
	data = data.replace('DD', '%.2d'%ymd[2])
	data = toBytes(data)
	loader.write(data)
	loader.close()
	pixbuf = loader.get_pixbuf()
	return pixbuf
Example #14
0
def newDndDatePixbuf(ymd):
    imagePath = join(rootDir, 'svg', 'dnd-date.svg')
    loader = GdkPixbuf.PixbufLoader.new_with_type('svg')
    data = open(imagePath).read()
    data = data.replace('YYYY', '%.4d'%ymd[0])
    data = data.replace('MM', '%.2d'%ymd[1])
    data = data.replace('DD', '%.2d'%ymd[2])
    data = toBytes(data)
    loader.write(data)
    loader.close()
    pixbuf = loader.get_pixbuf()
    return pixbuf
Example #15
0
def newColorCheckPixbuf(color, size, checked):
    loader = GdkPixbuf.PixbufLoader.new_with_type("svg")
    if checked:
        data = colorCheckSvgTextChecked
    else:
        data = colorCheckSvgTextUnchecked
    data = data.replace(
        "fill:#000000;",
        "fill:%s;" % rgbToHtmlColor(*color[:3]),
    )
    data = toBytes(data)
    loader.write(data)
    loader.close()
    pixbuf = loader.get_pixbuf()
    return pixbuf
Example #16
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)
Example #17
0
def newColorCheckPixbuf(color, size, checked):
    loader = GdkPixbuf.PixbufLoader.new_with_type('svg')
    if checked:
        data = colorCheckSvgTextChecked
    else:
        data = colorCheckSvgTextUnchecked
    data = data.replace(
        'fill:#000000;',
        'fill:%s;'%rgbToHtmlColor(*color[:3]),
    )
    data = toBytes(data)
    loader.write(data)
    loader.close()
    pixbuf = loader.get_pixbuf()
    return pixbuf
Example #18
0
	def statusIconUpdateIcon(self, ddate):  # FIXME
		from scal3.utils import toBytes
		imagePath = (
			ui.statusIconImageHoli if ui.todayCell.holiday
			else ui.statusIconImage
		)
		ext = os.path.splitext(imagePath)[1][1:].lower()
		loader = GdkPixbuf.PixbufLoader.new_with_type(ext)
		if ui.statusIconFixedSizeEnable:
			try:
				width, height = ui.statusIconFixedSizeWH
				loader.set_size(width, height)
			except:
				myRaise()
		data = open(imagePath, "rb").read()
		if ext == "svg":
			dayNum = locale_man.numEncode(
				ddate[2],
				mode=calTypes.primary,  # FIXME
			)
			if ui.statusIconFontFamilyEnable:
				if ui.statusIconFontFamily:
					family = ui.statusIconFontFamily
				else:
					family = ui.getFont()[0]
				dayNum = "<tspan style=\"font-family:%s\">%s</tspan>" % (
					family,
					dayNum,
				)
			data = data.replace(
				b"TX",
				toBytes(dayNum),
			)
		loader.write(data)
		loader.close()
		pixbuf = loader.get_pixbuf()
		self.sicon.set_from_pixbuf(pixbuf)