Check-in [780f0ca590]
Overview
| Comment: | Compress gtkBuilder file with zlib for distribution. (gzip not usable without workarounds in Python2) | 
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive | 
| Timelines: | family | ancestors | descendants | both | trunk | 
| Files: | files | file ages | folders | 
| SHA1: | 
780f0ca590c0d302246b05e50b20bb3e | 
| User & Date: | mario on 2015-04-04 06:06:09 | 
| Other Links: | manifest | tags | 
Context
| 
   2015-04-04 
 | ||
| 10:00 | Add plugin defaults now really on initialization. Safeguard in configwin. Always use gtk.STOCK_NEW for empty app fields in config_dialog (not just for new lines). check-in: 8178f6832b user: mario tags: trunk | |
| 06:06 | Compress gtkBuilder file with zlib for distribution. (gzip not usable without workarounds in Python2) check-in: 780f0ca590 user: mario tags: trunk | |
| 06:03 | Convert shell _pack script into sectioned Makefile. check-in: b2a6fd9de3 user: mario tags: trunk | |
Changes
Modified config.py from [f0017cbe55] to [5baf9d2d63].
| ︙ | ︙ | |||
22 23 24 25 26 27 28 29 30 31 32 33 34 35  | 
import os
import sys
import json
import gzip
import platform
import re
import zipfile
import inspect
import pkgutil
# find_executable() is only needed by channels/configwin
try:
    from distutils.spawn import find_executable
 | >  | 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36  | 
import os
import sys
import json
import gzip
import platform
import re
import zlib
import zipfile
import inspect
import pkgutil
# find_executable() is only needed by channels/configwin
try:
    from distutils.spawn import find_executable
 | 
| ︙ | ︙ | |||
277 278 279 280 281 282 283  | 
            if server in netrc:
                return netrc[server]
        
# Retrieve content from install path or pyzip archive (alias for pkgutil.get_data)
#
 | | > >  | 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296  | 
            if server in netrc:
                return netrc[server]
        
# Retrieve content from install path or pyzip archive (alias for pkgutil.get_data)
#
def get_data(fn, decode=False, z=False):
    try:
        bin = pkgutil.get_data("config", fn)
        if z:
            bin = zlib.decompress(bin)
        if decode:
            return bin.decode("utf-8")
        else:
            return str(bin)
    except:
        pass
 | 
| ︙ | ︙ | 
Modified gtk3.xml.zlib from [3be7b6b7e5] to [68caf400e4].
cannot compute difference between binary files
Modified st2.py from [fe8224f3c5] to [a24c95cdd7].
| ︙ | ︙ | |||
12 13 14 15 16 17 18  | 
# url: http://freshcode.club/projects/streamtuner2
# config:  
#   { type: env, name: http_proxy, description: proxy for HTTP access }
#   { type: env, name: XDG_CONFIG_HOME, description: relocates user .config subdirectory }
# category: sound
# depends: pygtk | gi, threading, requests, pyquery, lxml
# id: streamtuner2
 | |  | 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26  | 
# url: http://freshcode.club/projects/streamtuner2
# config:  
#   { type: env, name: http_proxy, description: proxy for HTTP access }
#   { type: env, name: XDG_CONFIG_HOME, description: relocates user .config subdirectory }
# category: sound
# depends: pygtk | gi, threading, requests, pyquery, lxml
# id: streamtuner2
# pack: *.py, gtk3.xml.zlib, bin, channels/__init__.py, bundle/*.py, CREDITS, help/index.page,
#   streamtuner2.desktop=/usr/share/applications/, README=/usr/share/doc/streamtuner2/,
#   help/streamtuner2.1=/usr/share/man/man1/, NEWS.gz=/usr/share/doc/streamtuner2/changelog.gz,
#   logo.png=/usr/share/pixmaps/streamtuner2.png
# architecture: all
#
# Streamtuner2 is a GUI for browsing internet radio directories, music
# collections, and video services - grouped by genres or categories.
 | 
| ︙ | ︙ | |||
233 234 235 236 237 238 239  | 
    def channel(self):
        return self.channels[self.current_channel]
    # List of module titles for channel tabs
    @property
    def channel_names(self):
        n = self.notebook_channels
 | |  | 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247  | 
    def channel(self):
        return self.channels[self.current_channel]
    # List of module titles for channel tabs
    @property
    def channel_names(self):
        n = self.notebook_channels
        return [n.get_menu_label_text(n.get_nth_page(i)) for i in range(0, n.get_n_pages())]
    # Returns the currently selected directory/channel object (from gtk)
    def current_channel_gtk(self):
        return self.channel_names[self.notebook_channels.get_current_page()]
    
        
    # Notebook tab has been clicked (receives numeric page_num), but *NOT* yet changed (visually).
 | 
| ︙ | ︙ | |||
302 303 304 305 306 307 308  | 
        if event == 2 or event.type == gtk.gdk._2BUTTON_PRESS:
            __print__(dbg.UI, "dblclick")
            url = self.channel().meta.get("url", "https://duckduckgo.com/?q=" + self.channel().module)
            self.action.browser(url)
    # Reload stream list in current channel-category
    def on_reload_clicked(self, widget=None, reload=1):
 | | >  | 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319  | 
        if event == 2 or event.type == gtk.gdk._2BUTTON_PRESS:
            __print__(dbg.UI, "dblclick")
            url = self.channel().meta.get("url", "https://duckduckgo.com/?q=" + self.channel().module)
            self.action.browser(url)
    # Reload stream list in current channel-category
    def on_reload_clicked(self, widget=None, reload=1):
        __print__(dbg.UI, "on_reload_clicked()", "reload=", reload, "current_channel=", self.current_channel, "c=", self.channels[self.current_channel], "cat=", self.channel().current)
        category = self.channel().current
        self.thread(
                       #@TODO: should get a wrapper, for HTTP errors, and optionalize bookamrks
            lambda: (  self.channel().load(category,reload), reload and self.bookmarks.heuristic_update(self.current_channel,category)  )
        )
    # Thread a function, add to worker pool (for utilizing stop button)
    def thread(self, target, *args):
        thread = Thread(target=target, args=args)
        thread.start()
 | 
| ︙ | ︙ | 
Modified uikit.py from [e7bfffdeb1] to [f968e46470].
| ︙ | ︙ | |||
55 56 57 58 59 60 61  | 
    import gtk
    import gobject
    GdkPixbuf = gtk.gdk
    empty_pixbuf = GdkPixbuf.Pixbuf(gtk.gdk.COLORSPACE_RGB,True,8,16,16)
    empty_pixbuf.fill(0xFFFFFFFF)
# prepare gtkbuilder data
 | |  | 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69  | 
    import gtk
    import gobject
    GdkPixbuf = gtk.gdk
    empty_pixbuf = GdkPixbuf.Pixbuf(gtk.gdk.COLORSPACE_RGB,True,8,16,16)
    empty_pixbuf.fill(0xFFFFFFFF)
# prepare gtkbuilder data
ui_xml = get_data("gtk3.xml.zlib", decode=True, z=True) or get_data("gtk3.xml", decode=True)
if ver == 2:
    ui_xml = ui_xml.replace('version="3.0"', 'version="2.16"')
# simplified gtk constructors               ---------------------------------------------
class uikit:
 | 
| ︙ | ︙ |