clToolbar.py

00001 #!/usr/bin/env python
00002 # -*- coding: utf-8 -*-
00003 
00004 # ----------------------------------------------------------------------------
00005 # pyjama - python jamendo audioplayer
00006 # Copyright (c) 2009 Daniel Nögel
00007 #
00008 # This program is free software: you can redistribute it and/or modify
00009 # it under the terms of the GNU General Public License as published by
00010 # the Free Software Foundation, either version 3 of the License, or
00011 # (at your option) any later version.
00012 #
00013 # This program is distributed in the hope that it will be useful,
00014 # but WITHOUT ANY WARRANTY; without even the implied warranty of
00015 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016 # GNU General Public License for more details.
00017 # You should have received a copy of the GNU General Public License
00018 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
00019 # ----------------------------------------------------------------------------
00020 
00021 import gtk, gtk.glade
00022 import os
00023 
00024 import functions
00025 
00026 from modules.clWidgets import EqualizerBox
00027 
00028 ## @package clToolbar
00029 # Holds Pyjama's Toolbar Class
00030 
00031 
00032 ## A gtk.Toolbar with an additional method
00033 # for setting images
00034 class Toolbar(gtk.Toolbar):
00035     ## The Constructor
00036     # @param self Object Pointer
00037     # @param window Reference to pyjama's window class
00038     def __init__(self, window):
00039         ## Reference to pyjama
00040         self.pyjama = window.main
00041 
00042         gtk.Toolbar.__init__(self)
00043         show_toolbar_text = self.pyjama.settings.get_value("PYJAMA", "SHOW_TOOLBAR_TEXT", True)
00044 #        if show_toolbar_text == None:
00045 #            self.pyjama.settings.set_value("PYJAMA", "SHOW_TOOLBAR_TEXT", True)
00046         if show_toolbar_text:
00047             self.set_style(gtk.TOOLBAR_BOTH)
00048         else:
00049             self.set_style(gtk.TOOLBAR_ICONS)
00050         self.set_icon_size(gtk.ICON_SIZE_LARGE_TOOLBAR)# (gtk.ICON_SIZE_DIALOG) # large_toolbar
00051         self.set_show_arrow(True)
00052 #        self.set_border_width(5)
00053 
00054 
00055         #
00056         # ToolButtons
00057         #
00058         ## Back Button
00059         self.bHistoryBack = gtk.ToolButton("Back")
00060         self.bHistoryBack.set_stock_id(gtk.STOCK_GO_BACK)
00061         self.bHistoryBack.set_sensitive(False)
00062         self.bHistoryBack.set_tooltip_text(_("Show previous page in history"))
00063         self.bHistoryBack.connect("clicked", self.on_bHistoryBack_clicked)
00064         self.insert(self.bHistoryBack, -1)
00065 
00066         ## Home Button
00067         self.bHome = gtk.ToolButton("Home")
00068         self.bHome.set_stock_id(gtk.STOCK_HOME)
00069         self.bHome.set_label(_("Home"))
00070         self.bHome.set_tooltip_text(_("Show start-page"))
00071         self.bHome.connect("clicked", self.on_bHome_clicked)
00072         self.insert(self.bHome, -1)
00073 
00074         ## Forward Button
00075         self.bHistoryForward = gtk.ToolButton("Forward")
00076         self.bHistoryForward.set_stock_id(gtk.STOCK_GO_FORWARD)
00077         self.bHistoryForward.set_sensitive(False)
00078         self.bHistoryForward.set_tooltip_text(_("Show next page in history"))
00079         self.bHistoryForward.connect("clicked", self.on_bHistoryForward_clicked)
00080         self.insert(self.bHistoryForward, -1)
00081 
00082         ## Seperator
00083         self.Separator1 = gtk.SeparatorToolItem()
00084         self.insert(self.Separator1, -1)
00085 
00086         ## Expander
00087         self.space_fs = gtk.ToolItem()
00088         self.space_fs.set_expand(True)
00089         self.insert(self.space_fs, -1)
00090 
00091         self.bEqualizer = gtk.ToolButton("Equalizer")
00092         self.set_image(self.bEqualizer, "view-media-equalizer.png")
00093         self.bEqualizer.set_tooltip_text(_("Show Equalizer"))
00094         self.bEqualizer.set_label("Equalizer")
00095         self.bEqualizer.connect("clicked", self.cb_show_equalizer)
00096         self.insert(self.bEqualizer, -1)
00097         self.bEqualizer.show()
00098 
00099         self.bPref = gtk.ToolButton("Preferences")
00100         self.bPref.set_stock_id(gtk.STOCK_PREFERENCES)
00101         self.bPref.set_tooltip_text(_("Show Preferences"))
00102         self.bPref.connect("clicked", self.pyjama.show_preferences)
00103         self.insert(self.bPref, -1)
00104         self.bPref.show()
00105         
00106 
00107 #        # Fullscreen
00108 #        self.bFullScrbeen = gtk.ToolButton("Fullscreen")
00109 #        self.bFullScreen.set_stock_id(gtk.STOCK_FULLSCREEN)
00110 #        self.bFullScreen.set_tooltip_text(_("Switch fullscreen/window-mode"))
00111 #        self.bFullScreen.connect("clicked", self.pyjama.window.menubar.on_bFullScreen_clicked)
00112 #        self.insert(self.bFullScreen, -1)
00113 
00114         # About
00115 #        self.bAbout = gtk.ToolButton("About")
00116 #        self.bAbout.set_stock_id(gtk.STOCK_ABOUT)
00117 #        self.bAbout.set_tooltip_text(_("Show infos about pyjama"))
00118 #        self.bAbout.connect("clicked", self.on_bAbout_clicked)
00119 #        self.insert(self.bAbout, -1)
00120 
00121 
00122         #
00123         # Accelerators
00124         #
00125         self.accel_group = gtk.AccelGroup()
00126 #        self.bFullScreen.add_accelerator("clicked", self.accel_group, gtk.keysyms.F11, 0, gtk.ACCEL_VISIBLE)
00127         self.bHistoryBack.add_accelerator("clicked", self.accel_group, 65361, gtk.gdk.MOD1_MASK, gtk.ACCEL_VISIBLE)
00128         self.bHome.add_accelerator("clicked", self.accel_group, ord("h"), gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE)
00129         self.bHistoryForward.add_accelerator("clicked", self.accel_group, 65363, gtk.gdk.MOD1_MASK, gtk.ACCEL_VISIBLE)
00130         self.pyjama.window.add_accel_group(self.accel_group)
00131 
00132 
00133         self.show_all()
00134 
00135     ## Set Image for a Button
00136     # @param self Object Pointer
00137     # @param widget Widget to set image for
00138     # @param uri URI to the image to be set
00139     # @return None
00140     def set_image(self, widget, uri):
00141         w, h = gtk.icon_size_lookup(self.get_icon_size())
00142         if not os.path.exists(uri):
00143             if os.path.exists(os.path.join(functions.install_dir(), "images", uri)):
00144                 uri = os.path.join(functions.install_dir(), "images", uri)
00145         pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(uri, w, h)
00146         img = gtk.Image()
00147         img.set_from_pixbuf(pixbuf)
00148         img.show()
00149         widget.set_icon_widget(img)
00150 
00151     ######################################################################
00152     #                                                                    #
00153     #                               Events                               #
00154     #                                                                    #
00155     ######################################################################
00156 
00157     def on_bHistoryForward_clicked(self, ev):
00158         if len(self.pyjama.historyForward) >= self.pyjama.settings.get_value("PERFORMANCE", "HISTORY_SIZE"):
00159             self.pyjama.historyForward.pop(0)
00160         if len(self.pyjama.historyForward) > 0:
00161             self.pyjama.historyBack.append(self.pyjama.historyCurrent)
00162             ret = self.pyjama.historyForward.pop()
00163             layout = ret['layout']
00164             data1 = ret['data1']
00165             data2 = ret['data2']
00166             data3 = ret['data3']
00167             data4 = ret['data4']
00168             self.pyjama.layouts.show_layout(layout, data1, data2, data3, data4, fromhistory=True, who_called = "on_bHistoryForward_clicked")
00169 
00170     def on_bHome_clicked(self, ev):
00171         print self.pyjama.check_another_instance_running()
00172         self.pyjama.go_home()
00173 
00174     def on_bHistoryBack_clicked(self, ev):
00175         if len(self.pyjama.historyBack) >= self.pyjama.settings.get_value("PERFORMANCE", "HISTORY_SIZE"):
00176             self.pyjama.historyBack.pop(0)
00177         if len(self.pyjama.historyBack) > 0:
00178             self.pyjama.historyForward.append(self.pyjama.historyCurrent)
00179             ret = self.pyjama.historyBack.pop()
00180             layout = ret['layout']
00181             data1 = ret['data1']
00182             data2 = ret['data2']
00183             data3 = ret['data3']
00184             data4 = ret['data4']
00185             self.pyjama.layouts.show_layout(layout, data1, data2, data3, data4, fromhistory=True, who_called = "on_bHistoryBack_clicked")
00186         
00187 
00188     def on_bAbout_clicked(self, ev):
00189         self.pyjama.window.show_about()
00190 
00191     def cb_show_equalizer(self, ev=None):
00192         eq = EqualizerBox(self.pyjama)
00193         eq.dialog()

Generated on Thu Jun 4 19:08:24 2009 for Pyjama by  doxygen 1.5.8