From c7284b6149dfbe50395cf2f95ff1ddd5d651ca0a Mon Sep 17 00:00:00 2001 From: Josef Date: Thu, 24 Jan 2019 17:52:49 +0800 Subject: [PATCH] Added support for toml config file --- .DS_Store | Bin 6148 -> 0 bytes .directory | 6 ----- .gitignore | 2 ++ notiframe/.directory | 5 ---- notiframe/NotiFrame.py | 49 +++++++++++++++++++++++++++------- notiframe/config.toml | 40 +++++++++++++++++++++++++++ notiframe/test/card_image.bmp | Bin 21566 -> 7230 bytes notiframe/test/imgBlack.bmp | Bin 30782 -> 30782 bytes notiframe/test/mask.bmp | Bin 21566 -> 7230 bytes notiframe/widgets/widget.py | 11 ++++---- 10 files changed, 88 insertions(+), 25 deletions(-) delete mode 100644 .DS_Store delete mode 100644 .directory delete mode 100644 notiframe/.directory create mode 100644 notiframe/config.toml diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index fb710a71800c71d15631709352279af851e362cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKJx;?=47N*#qAnd7A7V#}#Ee1}My4Ks(iF8wjgkQdwr~l~!&x{011I3~vsLvG z3LB~_yYl-I|GYR~qPQj^o;)pbqA?K-p@M^BEI)|&MSC(Zi#S>KSTFNw)zob-(hd8{ zfIPd5&S^;x^q4%q{PlC&S2txjUpI5uBfgPj^RttEsyAh&Aolw{DUO|AI^so z&cKEN`91`wU}4xP#!m;9I067On4{oWW(mm&hJ|6L2oHoc6{x9fBL-_a?7`v+!%k7t ziEa2`yE5B^!tv_ZKg4k2LeW=ez!^vxIMUOx^#AMK^M9J;XU>2#a8L|zR!++aZpnIU w@8+b}2IvebB5|GKCIttv6(d$!@d-2v>_HBIg<+=%3&j5jL>hc?2L6?SFATy;w*UYD diff --git a/.directory b/.directory deleted file mode 100644 index f89d008..0000000 --- a/.directory +++ /dev/null @@ -1,6 +0,0 @@ -[Dolphin] -Timestamp=2019,1,23,16,14,48 -Version=4 - -[Settings] -HiddenFilesShown=true diff --git a/.gitignore b/.gitignore index 554f38c..87cd60f 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ *.secret test/* +.DS_Store +.directory diff --git a/notiframe/.directory b/notiframe/.directory deleted file mode 100644 index fab0efe..0000000 --- a/notiframe/.directory +++ /dev/null @@ -1,5 +0,0 @@ -[Dolphin] -PreviewsShown=false -Timestamp=2019,1,23,16,24,39 -Version=4 -ViewMode=1 diff --git a/notiframe/NotiFrame.py b/notiframe/NotiFrame.py index 4ddadec..c2def83 100644 --- a/notiframe/NotiFrame.py +++ b/notiframe/NotiFrame.py @@ -4,6 +4,7 @@ import time import widgets.widget as widget import argparse import os +import toml try: import drivers.epd7in5b testMode = False @@ -24,14 +25,35 @@ if not testMode: epd = epd7in5b.EPD() epd.init() -width = 640 -height = 384 -cwidth = int(round(width/3)) -cheight = int(round(height/3)) +def convert(input): + if isinstance(input, dict): + return dict((convert(key), convert(value)) for key, value in input.iteritems()) + elif isinstance(input, list): + return [convert(element) for element in input] + elif isinstance(input, unicode): + return input.encode('utf-8') + else: + return input -image_yellow = Image.new('1', (width, height), 255) # 255: clear the frame +uni_config = toml.load(os.path.join(mydir, 'config.toml')) +config = convert(uni_config) + +config2 = {'resWidth': 640, 'resHeight': 384, 'cellsWidth': 3, 'cellsHeight': 3, 'widgets': [ +{'type': 'image', 'posX': 0, 'posY': 0, 'width': 3, 'height': 3, 'bwStyle': 'mono', 'scaleMode': 'fill', 'filename': 'forest.jpg'}, +{'type': 'trello', 'posX': 0, 'posY': 0, 'width': 1, 'height': 3, 'board': 'Organisation', 'list': 'Plans'}, +{'type': 'trello', 'posX': 1, 'posY': 0, 'width': 2, 'height': 3, 'board': 'E-paper', 'list': 'To Do:'} +]} + +#print(toml.dumps(config)) +print(config) +print(config2) + +cwidth = int(round(config['resWidth']/config['cellsWidth'])) +cheight = int(round(config['resHeight']/config['cellsHeight'])) + +image_yellow = Image.new('1', (config['resWidth'], config['resHeight']), 255) # 255: clear the frame draw_yellow = ImageDraw.Draw(image_yellow) -image_black = Image.new('1', (width, height), 255) # 255: clear the frame +image_black = Image.new('1', (config['resWidth'], config['resHeight']), 255) # 255: clear the frame draw_black = ImageDraw.Draw(image_black) #str1 = open("text.txt", "r").read() @@ -44,9 +66,18 @@ draw_black = ImageDraw.Draw(image_black) def initWidgets(): widgetList = [] - widgetList.append(widget.ImageWidget(cwidth, cheight, (0, 0), (3, 3), "mono", "fill", os.path.join(mydir, 'widgets/resources/images/forest.jpg'))) - widgetList.append(widget.TrelloWidget(cwidth, cheight, (0, 0), (1, 3), "Organisation", "Plans")) - widgetList.append(widget.TrelloWidget(cwidth, cheight, (1, 0), (2, 3), "E-paper", "Done")) + for widg_conf in config['widgets']: + if widg_conf['type'] == 'image': + widgetList.append(widget.ImageWidget(cwidth, cheight, (widg_conf['posX'], widg_conf['posY']), + (widg_conf['width'], widg_conf['height']), widg_conf['bwStyle'], widg_conf['scaleMode'], + os.path.join(mydir, os.path.join('widgets/resources/images/', widg_conf['filename'])))) + if widg_conf['type'] == 'trello': + widgetList.append(widget.TrelloWidget(cwidth, cheight, (widg_conf['posX'], widg_conf['posY']), + (widg_conf['width'], widg_conf['height']), widg_conf['board'], widg_conf['list'])) + + #widgetList.append(widget.ImageWidget(cwidth, cheight, (0, 0), (3, 3), "mono", "fill", os.path.join(mydir, os.path.join('widgets/resources/images/', 'forest.jpg')))) + #widgetList.append(widget.TrelloWidget(cwidth, cheight, (0, 0), (1, 3), "Organisation", "Plans")) + #widgetList.append(widget.TrelloWidget(cwidth, cheight, (1, 0), (2, 3), "E-paper", "Done")) #widgetList.append(widget.ImageWidget(cwidth, cheight, (1, 2), (2, 1), "mono", "fill", "forest.jpg")) #widgetList.append(widget.TextWidget(cwidth, cheight, (0, 0), (1, 3), str2)) #widgetList.append(widget.TextWidget(cwidth, cheight, (0, 0), (2, 3), str1)) diff --git a/notiframe/config.toml b/notiframe/config.toml new file mode 100644 index 0000000..0a8c057 --- /dev/null +++ b/notiframe/config.toml @@ -0,0 +1,40 @@ +cellsHeight = 3 +resHeight = 384 +resWidth = 640 +cellsWidth = 3 +[[widgets]] +width = 3 +posX = 0 +posY = 0 +scaleMode = "fill" +bwStyle = "mono" +type = "image" +filename = "forest.jpg" +height = 3 + +[[widgets]] +list = "Plans" +height = 3 +width = 1 +board = "Organisation" +posX = 0 +posY = 0 +type = "trello" + +[[widgets]] +list = "To Do:" +height = 2 +width = 2 +board = "E-paper" +posX = 1 +posY = 0 +type = "trello" + +[[widgets]] +list = "Tasks" +height = 1 +width = 2 +board = "Organisation" +posX = 1 +posY = 2 +type = "trello" diff --git a/notiframe/test/card_image.bmp b/notiframe/test/card_image.bmp index 18d5b86aaa896a3b8cec0bfd516d5a5c0ffd4775..931fa426c13ac51f1093185919e4b470aea31f01 100644 GIT binary patch literal 7230 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 Hjr{WeH{jL) diff --git a/notiframe/test/imgBlack.bmp b/notiframe/test/imgBlack.bmp index 5b18f260bbb2e76721c3c004a4d1df02d4399491..afb7a945b37f3bd8c1e19bf1745b7d72511ed701 100644 GIT binary patch literal 30782 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 delta 386 zcmdmIv2O*Vij%Kh2m=_{0Z9!YUd713&;Z1YKnMmQ8&#~?Hn&S`XJ%$#sGsO)zlcf~P&YIy_z DGmu(F diff --git a/notiframe/widgets/widget.py b/notiframe/widgets/widget.py index 5251753..7a3d465 100644 --- a/notiframe/widgets/widget.py +++ b/notiframe/widgets/widget.py @@ -175,6 +175,7 @@ class ImageWidget(): self.draw_mask_black = ImageDraw.Draw(self.mask_black) self.bwMode = bwMode self.scaleMode = scaleMode + print(img) self.image = Image.open(img) self.updateWidget() @@ -222,9 +223,9 @@ class ImageWidget(): def bwImg(self, img): self.autoThresholdLimit(img) - if self.bwMode is "mono": + if self.bwMode == "mono": return img.convert('L').point(self.threshold, '1') - if self.bwMode is "dither": + if self.bwMode == "dither": return img.convert(mode='1') def pasteImg(self, img): @@ -243,11 +244,11 @@ class ImageWidget(): def updateWidget(self): if self.image is not None: - if self.scaleMode is "fill": + if self.scaleMode == "fill": rsImg = self.fillImg(self.image) - if self.scaleMode is "resize": + if self.scaleMode == "resize": rsImg = self.resizeImg(self.image) - if self.scaleMode is "none": + if self.scaleMode == "none": rsImg = self.image newImg = self.bwImg(rsImg) self.pasteImg(newImg)