Check-in [730e6dc9f1]
Overview
Comment: | Strip carriage return from plugin meta block, which causes field reading to fail on Windows. And use `empty_pixbuf` as fallback for uikit.pixbuf() in case the content isn't valid base64 still. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
730e6dc9f161ce70cbf05679b0f0d065 |
User & Date: | mario on 2016-11-09 15:15:06 |
Other Links: | manifest | tags |
Context
2016-11-09
| ||
20:06 | Fix binary file open mode (CRLF corruption on Windows) check-in: 9564d3909a user: mario tags: trunk | |
15:15 | Strip carriage return from plugin meta block, which causes field reading to fail on Windows. And use `empty_pixbuf` as fallback for uikit.pixbuf() in case the content isn't valid base64 still. check-in: 730e6dc9f1 user: mario tags: trunk | |
2016-11-08
| ||
20:01 | Add Windows support (taskkill instead of pkill) check-in: 20cd77b794 user: mario tags: trunk | |
Changes
Modified pluginconf.py from [98d9350ac0] to [cdf7ab2169].
1 2 3 4 5 6 | # encoding: UTF-8 # api: python # type: handler # category: io # title: Plugin configuration # description: Read meta data, pyz/package contents, module locating | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # encoding: UTF-8 # api: python # type: handler # category: io # title: Plugin configuration # description: Read meta data, pyz/package contents, module locating # version: 0.6.2 # priority: core # docs: http://fossil.include-once.org/streamtuner2/wiki/plugin+meta+data # config: - # # Provides plugin lookup and meta data extraction utility functions. # It's used to abstract module+option management in applications. # For consolidating internal use and external/tool accessibility. |
︙ | ︙ | |||
234 235 236 237 238 239 240 241 242 243 244 245 246 247 | "title": fn, "description": "no description", "config": [], "doc": "" } # Extract coherent comment block if not literal: src = rx.comment.search(src) if not src: log_ERR("Couldn't read source meta information:", fn) return meta src = src.group(0) src = rx.hash.sub("", src).strip() | > | 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 | "title": fn, "description": "no description", "config": [], "doc": "" } # Extract coherent comment block src = src.replace("\r", "") if not literal: src = rx.comment.search(src) if not src: log_ERR("Couldn't read source meta information:", fn) return meta src = src.group(0) src = rx.hash.sub("", src).strip() |
︙ | ︙ | |||
289 290 291 292 293 294 295 | # ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ # Pretty crude comment splitting approach. But works # well enough already. Technically a YAML parser would # do better; but is likely overkill. # class rx: comment = re.compile(r"""(^ {0,4}#.*\n)+""", re.M) | | | 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 | # ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ # Pretty crude comment splitting approach. But works # well enough already. Technically a YAML parser would # do better; but is likely overkill. # class rx: comment = re.compile(r"""(^ {0,4}#.*\n)+""", re.M) hash = re.compile(r"""(^ {0,4}# *\r*)""", re.M) keyval = re.compile(r""" ^([\w-]+):(.*$(?:\n(?![\w-]+:).+$)*) # plain key:value lines """, re.M | re.X) config = re.compile(r""" \{ (.+?) \} | \< (.+?) \> # JSOL/YAML scheme {...} dicts """, re.X) options = re.compile(r""" |
︙ | ︙ |
Modified uikit.py from [2f76cfbd7b] to [ce679bb712].
︙ | ︙ | |||
28 29 30 31 32 33 34 | import copy import sys import re import base64 import inspect from compat2and3 import unicode, xrange, PY3, gzip_decode | < > | 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | import copy import sys import re import base64 import inspect from compat2and3 import unicode, xrange, PY3, gzip_decode # gtk version (2=gtk2, 3=gtk3, 7=tk;) ver = 2 # if running on Python3 or with commandline flag if PY3 or conf.args.gtk3: ver = 3 # load gtk modules if ver==3: from gi import pygtkcompat as pygtk pygtk.enable() pygtk.enable_gtk(version='3.0') from gi.repository import Gtk as gtk from gi.repository import GObject as gobject from gi.repository import GdkPixbuf log.STAT(gtk) log.STAT(gobject) else: import pygtk import gtk import gobject GdkPixbuf = gtk.gdk empty_pixbuf = None # prepare gtkbuilder data ui_xml = get_data("gtk3.xml.gz", decode=True, gz=True) #or get_data("gtk3.xml", decode=True) if ver == 2: ui_xml = ui_xml.replace('version="3.0"', 'version="2.16"') |
︙ | ︙ | |||
613 614 615 616 617 618 619 | return None if fmt and ver==3: p = GdkPixbuf.PixbufLoader.new_with_type(fmt) elif fmt: p = GdkPixbuf.PixbufLoader(fmt) else: p = GdkPixbuf.PixbufLoader() | > | | > > > | 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 | return None if fmt and ver==3: p = GdkPixbuf.PixbufLoader.new_with_type(fmt) elif fmt: p = GdkPixbuf.PixbufLoader(fmt) else: p = GdkPixbuf.PixbufLoader() if decode: # inline encoding if re.match("^[\w+/=\s]+$", str(buf)): buf = base64.b64decode(buf) # from e.g. #png: meta field else: p.close() return empty_pixbuf if gzip: buf = gzip_decode(buf) if buf: p.write(buf) pix = p.get_pixbuf() p.close() return pix |
︙ | ︙ |