ADDED logo.py Index: logo.py ================================================================== --- logo.py +++ logo.py @@ -0,0 +1,514 @@ +# type: binary +# api: gtk +# title: streamtuner2 logo +# description: encoded PNG +# +# Allows to be packaged within PYZ archive. + +png = """ +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 +""" Index: st2.py ================================================================== --- st2.py +++ st2.py @@ -4,10 +4,11 @@ # api: python # type: application # title: streamtuner2 # description: Directory browser for internet radio, audio and video streams # version: 2.1.5 +# state: beta # author: Mario Salzer # license: Public Domain # url: http://freshcode.club/projects/streamtuner2 # config: # { type: env, name: http_proxy, description: proxy for HTTP access } @@ -22,11 +23,11 @@ # streamtuner2.png, 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. -# It utilizes installed audio players, and streamripper for recording. +# It runs your preferred audio player, and streamripper for recording. # # It's an independent rewrite of streamtuner1. Being written in Python, # can be more easily extended and fixed. The mix of JSON APIs, regex # or PyQuery extraction makes list generation simpler and more robust. # @@ -48,16 +49,17 @@ # add library path sys.path.insert(0, "/usr/share/streamtuner2") # pre-defined directory for modules sys.path.insert(0, ".") # development module path # gtk modules -from uikit import pygtk, gtk, gobject, ui_file, uikit, gui_startup, AboutStreamtuner2 +from uikit import pygtk, gtk, gobject, uikit, ui_xml, gui_startup, AboutStreamtuner2 # custom modules from config import * # initializes itself, so all conf.vars are available right away import ahttp import action +import logo import favicon import channels import channels.bookmarks import channels.configwin import channels.streamedit @@ -90,18 +92,16 @@ # constructor def __init__(self): - # gtkrc stylesheet - self.load_theme(), gui_startup(1/20.0) - - # instantiate gtk/glade widgets in current object - gtk.Builder.__init__(self) - gtk.Builder.add_from_file(self, conf.find_in_dirs([".", conf.share], ui_file)), gui_startup(2/20.0) - # manual gtk operations - self.extensionsCTM.set_submenu(self.extensions) # duplicates Station>Extension menu into stream context menu + # Load stylesheet, instantiate GtkBuilder in self, menu and logo hooks + gui_startup(0/20.0), self.load_theme() + gui_startup(1/20.0), gtk.Builder.__init__(self) + gui_startup(1/20.0), gtk.Builder.add_from_string(self, ui_xml) + gui_startup(3/20.0), self.extensionsCTM.set_submenu(self.extensions) # duplicates Station>Extension menu into stream context menu + self.img_logo.set_from_pixbuf(uikit.pixbuf(logo.png)) # initialize built-in plugins self.channels = { "bookmarks": channels.bookmarks.bookmarks(parent=self), # this the remaining built-in channel } @@ -109,11 +109,11 @@ self.features = { "search": channels.search.search(self), "configwin": channels.configwin.configwin(self), "streamedit": channels.streamedit.streamedit(self), } - gui_startup(3/20.0) + gui_startup(4/20.0) # append other channel modules and plugins self.load_plugin_channels() # load application state (widget sizes, selections, etc.) @@ -140,11 +140,11 @@ try: self.channel().first_show() except: __print__(dbg.INIT, "main.__init__: current_channel.first_show() initialization error") # bind gtk/glade event names to functions - gui_startup(19/20.0) + gui_startup(19.75/20.0) self.connect_signals(dict({ "gtk_main_quit" : self.gtk_main_quit, # close window # treeviews / notebook "on_stream_row_activated" : self.on_play_clicked, # double click in a streams list "on_category_clicked": self.on_category_clicked, # new selection in category list @@ -204,12 +204,12 @@ "streamedit_new": self.streamedit.new, "streamedit_cancel": self.streamedit.cancel, }, **self.add_signals)) # actually display main window - gui_startup(98.9/100.0) self.win_streamtuner2.show() + gui_startup(1.0) #-- Shortcut for glade.get_widget() # Allows access to widgets as direct attributes instead of using .get_widget() # Also looks in self.channels[] for the named channel plugins @@ -404,11 +404,11 @@ def load_plugin_channels(self): # initialize plugin modules (pre-ordered) ls = channels.module_list() for module in ls: - gui_startup(2/10.0 + 7/10.0 * float(ls.index(module))/len(ls), "loading module "+module) + gui_startup(4/20.0 + 13.5/20.0 * float(ls.index(module))/len(ls), "loading module "+module) # skip module if disabled if conf.plugins.get(module, 1) == False: __print__(dbg.STAT, "disabled plugin:", module) continue @@ -500,17 +500,15 @@ #-- run main if __name__ == "__main__": - # graphical if len(sys.argv) < 2 or "--gtk3" in sys.argv: # prepare for threading in Gtk+ callbacks gobject.threads_init() - gui_startup(1/100.0) # prepare main window main = StreamTunerTwo() # module coupling @@ -522,15 +520,14 @@ if (conf.get("firstrun")): main.configwin.open(None) del conf.firstrun # run - gui_startup(100/100.0) gtk.main() __print__(dbg.PROC, r" gtk_main_quit ") # invoke command-line interface else: import cli cli.StreamTunerCLI()