From 8d2f3105d49da062ebbe005b72c3169fbc108464 Mon Sep 17 00:00:00 2001 From: Joerg Wunsch Date: Fri, 29 Mar 2024 23:05:04 +0100 Subject: [PATCH] Add an AVR Logo image to the memory tab --- src/python/adgui.py | 88 +++++++++++++++++++++++++++++++++++++++++- src/python/memories.ui | 24 +++++++++--- 2 files changed, 105 insertions(+), 7 deletions(-) diff --git a/src/python/adgui.py b/src/python/adgui.py index 5af41a71..8c060af5 100755 --- a/src/python/adgui.py +++ b/src/python/adgui.py @@ -47,10 +47,85 @@ else: sys.path.append(builddir) sys.path.append(builddir + '/python') +global avrlogo +# source: https://github.com/avrdudes/avrdude/discussions/841 +avrlogo = b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00`'+ \ + b'\x00\x00\x00`\x08\x06\x00\x00\x00\xe2\x98w8\x00\x00\x00\tpHY'+ \ + b's\x00\x00\x0b\x12\x00\x00\x0b\x12\x01\xd2\xdd~\xfc\x00\x00\x05iID'+ \ + b'ATx\x9c\xed\x9d\xffU\x1c7\x10\xc7\x87\xbc\xfc\x8fS\x81\x9d\n'+ \ + b'N\xa9\x00w`:\x00wp\xae \xa2\x82\\\x076\x15\x84\x0e\xe0'+ \ + b'*\xc8\\\x05\x86\n\x12* O\xce,\xec-\xd2\xccH\xab\xbd\x81'+ \ + b'0\x9f\xf7\xee\xbdc\x7fh%}5#i\xa4c\x8f\x1e\x1e\x1e\xc0'+ \ + b"\xb1\xe3'\xaf{[\\\x00c\\\x00c\\\x00c~\xd6>>\xc6"+ \ + b'x\x0e\x00_G\x87>\xc7\x18\xbf\xf5\xca~\x8c\xf1\x1d\x00\xdc\x00\xc0'+ \ + b'\x8a\x0e\xed\x00\xe0c\x8c\xf1\x9f\x97\x98\xee$\xef\xcduSc\x01_'+ \ + b'\x85\xbf\xe7\xb2\x1eU\x12\xd0\xf7\xf5\x0bN\xb7K\xdd\xb8\x0b2F='+ \ + b'\x0f\x881j.\xacvK\x19\xf3\xfd?\xa4\x9b\xae;\xd2\xa4\xd7\xdb'+ \ + b'\x02Z\xdc\x92\xe6\x9e\xd7\x96\xae\x1awA\xc6\xb8\x00\xc6\xb8\x00\xc6\xb8'+ \ + b'\x00\xc6\xb8\x00\xc6\x1c\xadV\xab\x08\x00\xbf\xbf\xe9Z\xb0\xe3"\t\xe0'+ \ + b'\x0b\x02\x86\xb8\x0b2\xc6\x050\xc6\x050\xc6\x050\xc6\x050\xc6\x05'+ \ + b'0\xc6\x050\xc6\x050\xc6\x050\xc6\x050\xc6\x050\xc6\x050\xc6'+ \ + b'\x050\xc6\x050F\xbd3\xae\x92/\x00p\x0b\x00\x7f*n\xdb"'+ \ + b'\xe2\xc7\xe9\xc1\x10B\xda\xd1v\x05\x00\'\x8dy\xd8\x02\xc0)">'+ \ + b'\xdb\x01\x17B\xb8\xc9\xa4{\x89\x88\xe75\x0f\x08!\x0c\xf9\x0e\xe9Y'+ \ + b'-y]b=\xe0\xb1BC\x08i\xcf\xcd\x99p\xfd\x17D\xdc\xe4'+ \ + b'N\x84\x10R\xc1\xfej\xcc\xc7o\x88\x88\x85t\xd3\xce\xb8?\xc6\xc7'+ \ + b'\x10Q\xb5\x8f\x87\x83\xf2\xbb\xa9\x11b\t\x17\x14G\xdf5\x9b\x9e\x8a'+ \ + b'\xdb\x04\xa9\x02\xb7\ry\xd8\x96*_z\xe6\x1c\xf0?R\xe3\xbb\xd4'+ \ + b'&\xd3[\x80\x1d"\xde\x0c\x7f\xd0w\xa9\x02\xdf\x87\x108\xd3\x8f\xcc'+ \ + b'\xb9\xea{\xe8Y\xef\x1b\xd2TC\xaeL%Bo\x01r\xaeDS'+ \ + b'\x81\xc5kH\xc4]E\x1e\xf6\x1aAc~fC"\x88\xf9\xee)'+ \ + b'\xc0\x1d">s9\x9d\xac \xdbG\xd4^{\x88\xd6?Atu'+ \ + b'=GA\\\xcb\xd2tL\xebR\x9f\x91\x84\r!DE\xe5e\x1b'+ \ + b'\x812\x8fYh\xc4T"\x8d\xb0\xbe!\xe2U!\xdf7!\x84\xdd'+ \ + b'd{\xfc\x1e\xbd,\x80-8e\xf0NHc5\x1a\xd6\xe5\x98\xe5'+ \ + b'\xca(\xed\x96\xd6\x7f\xc2|>\xa5\xa1\xb6`\xbdYq\x06z\t\xa0'+ \ + b'q\x11\xb3*\x90\nr\xcf\x9c\xbf\x17\n\xbb\xa4\xef\xe7\xca\xcf\x8d\xc6'+ \ + b'\xba\x08p\xaf\x19n\x92\x85HVpR\xb2\x02\x9aPq\x05\xdd\xe4'+ \ + b"&]\xf0\xd4\xfa['t\x1a\x8ei\x0e\x90\x83\xfd)T\x0f\x01\x8a"+ \ + b'\x05\xcf0\xd7\n6\x05+\xb8\x17\xc49\xc4\xc8\xe7\xb6\xe5\xa6\xb9\x02'+ \ + b'H\x05\x9f"\xb9\x11 +\xf8\x90;AB\xe7\xdc\xcc\x95a\xeb\x07'+ \ + b'\x9a\xf8\x95\x1a!\xd7\xaf\xcd\x16\xa0\xa6\xf5k\xdc\xc8\x00\xd7bs\xe7'+ \ + b'\xb8\xeb\xab\xe2;\r\xec(\x0eT\x82;7;\x16\xf4K\x8d\x00\xf0'+ \ + b'\x14dK\xe6z,\\\xfa+"f\xcdz\x12c*\x06\xd1\xc8\x92'+ \ + b'\xbek\xf2U\x8a\x05\t#3\xe0&}t\xef5w\xff\x9cy\xc0'+ \ + b'%c\xf6\x01\x9eb9{\xa4{B\x08\x1b\xc5\x8e\xec\xc8\xb4\xde\xcd'+ \ + b'H\x80E}\xbf0\xab\x96\x10\xad}\x8e\x0b\x92:Kv\xc4\xa2H'+ \ + b'\xff\x8c\xac\xe5\x19\xa3 ]1\xe8F\xad_\x8a\xc4.\x06Yiq'+ \ + b'\x026\xd0*\xc0%\xe3\x1e\xc20q)\r\xcd\xc8r4\xc1*n'+ \ + b'*\xbf\x16\xce\x1f$\xe63%5\x1ae\x18\xfe\x07\xad\x02p\x85['+ \ + b'\x17\xbe\xd7\xa4\xf1\x98\x16g\x05L\xeb\x7fg\xd1\xfa\xc9\xe7c\xcd\xb3'+ \ + b'[\x04\xe0Z\xff\xd4\xec\xcf\x98!eJC\xb2\x82\xe3\xc6\xd8}\xb7'+ \ + b"x\x7f\xaa\xd4\xd1'\xdb\x18\xe0\xc9\xe5\\\xd7\x86;Z\x04\xa8\rv"+ \ + b'\xd5\x0e)\xa7\x14\xad \x07]\xdbs\xc1\xe5z\xf4\xe1\xfa.6\xe6'+ \ + b'S\xa2V\x80miT@\x05\xcf\x8dyO\x197r\xab\x08U\x1f'+ \ + b'Kc\xe9\tk\xc5\x10\xb7\x15\xce\xa2\xafZV\xefj\x05\x90|\x7f'+ \ + b'\xae\xe0\x92\x1b\x99\x1b\x9exd\x81\xd6_\x9b\x97\xea\x8e\xbfF\x00\xa9'+ \ + b'\xf5\xb3#\x16\xc6\nz,\xd8\x0c\x9c/\xd8\xfa\x078+\xd0\x94e'+ \ + b'\x8f\x1a\x018uO\x85\x82Kn\xa4\x97\x15,\xdd\xfa\x07\xba\x85>'+ \ + b'\xb4\x02\xdcuXg\x9d\xbb\xee\x9b\xac\xa0(\xe2\x81\x97\x1b\xe7\x8e\xee'+ \ + b'\x1e\xd1\n\xd0c\x97A\x8fu\xdf\x974\xf1\x92\xfa\x02)\xea\xfb\x03'+ \ + b'\x8d\x00\xd2:k\x8d\xd9s{\x80\x9a\x17l\x0c\x16\xdbAa\x05\xaa'+ \ + b'0\xbdF\x00i\x9dU\x8cw\x8cXj\xdd\xf7P\xbe\x7fJ\xcb\xe2'+ \ + b'\xd1\x1e\x92\x00\xddw\x19\x08}A\xb5\x1544\x82\x9epV\xa0Z'+ \ + b'\xfb\x90\x04(V\xfe(\xe8VK1HGhLw\xdc\x97\x98\x04'+ \ + b'\xdd4\xcfGD\xb1/\x90\x04\xc8\xba\x0b\x1a\xd3\xd7,EN\xd90'+ \ + b'\xe1\x05\xcd\xac7\xb5\xbcS\xdad\xdbe\xb9\x91b9\xd3c\x9a!'+ \ + b'\xe5YitF\xd6\xc9\xceK\xfc\xbf\xa5\x18\xe3?\xd00\xc6\x050'+ \ + b'\xc6\x050\xc6\x050\xc6\x050\xc6\x050\xc6\x050\xc6\x050\xc6\x05'+ \ + b'0\xc6\x050\xc6\x050\xc6\x050\xc6\x050\xc6\x050\xc6\x050\xc6'+ \ + b'\x050\xc6\x050&\tp\xf1\xa6k\xc0\x96\x0b\xd5\x8b\xdc\xe8}\x8c'+ \ + b'\x7fk\xb2\xaa}\x81\xd9\xe8z\xd5\x92\xe8kK7\xfd\x80Q\xf3\xbe'+ \ + b'J\x95\x0b\xea\xf9\xe2\xcb\xb7\x82\xb6\xce\xbc\x0f0\xc6\x050\xc6\x050'+ \ + b'\xc6\x050\xa6\xb7\x00\x9f\x17\xba\xe7\xb5\xa5\xabf\xd6\xfb\x84k\x87p'+ \ + b'B\xfa\xb9\x17\xca]\xd0\xf1\x17\x97\xee$\xef\xcdu\xe3.\xc8\x98\x1a'+ \ + b'\x01\xa6\xa6\xd7\xd5\x14i\xb3\xef\xf8gJ\xbb\x99\x1b\x80\x97NwL'+ \ + b's\xdd\xa8]\x90\xb3\x0c\xee\x82\x8cq\x01\x8cq\x01\x8cq\x01,\x01'+ \ + b'\x80\x7f\x01\xd4\xa0\x1d\x07\x10\x94\xee\x92\x00\x00\x00\x00IEND\xae'+ \ + b'B`\x82' + import swig_avrdude as ad - - def avrdude_init(): ad.init_config() @@ -207,6 +282,15 @@ class adgui(QObject): if not self.__dict__[widgetname]: print(loader.errorString(), file = sys.stderr) + # Create pixmap for AVR logo from above, create a QGraphicsScene + # out of it, and populate the QGraphicsView items with it. + global avrlogo + logo = QPixmap() + logo.loadFromData(avrlogo) + gsc = QGraphicsScene() + gsc.addPixmap(logo) + self.memories.avr.setScene(gsc) + self.adgui.show() self.adgui.actionAbout.triggered.connect(self.about.show) diff --git a/src/python/memories.ui b/src/python/memories.ui index 55ed963e..baa9e42d 100644 --- a/src/python/memories.ui +++ b/src/python/memories.ui @@ -127,7 +127,8 @@ - background-color: rgb(255, 255, 255); + background-color: rgb(255, 255, 255); +color: rgb(180, 180, 180); QFrame::Box @@ -386,7 +387,7 @@ 40 230 481 - 121 + 141 @@ -396,7 +397,7 @@ 370 - 40 + 50 83 25 @@ -409,7 +410,7 @@ 370 - 80 + 90 83 25 @@ -421,7 +422,7 @@ - 90 + 20 60 83 25 @@ -434,6 +435,19 @@ Erase + + + + 150 + 30 + 171 + 101 + + + + false + +