gget r14 - in trunk: data gget



Author: johans
Date: Mon Jun 23 23:19:28 2008
New Revision: 14
URL: http://svn.gnome.org/viewvc/gget?rev=14&view=rev

Log:
Hacked more on various stuff.

Modified:
   trunk/data/gget.glade
   trunk/data/gget.schemas.in
   trunk/gget/AddDownloadDialog.py
   trunk/gget/Configuration.py
   trunk/gget/GUI.py
   trunk/gget/MainWindow.py

Modified: trunk/data/gget.glade
==============================================================================
--- trunk/data/gget.glade	(original)
+++ trunk/data/gget.glade	Mon Jun 23 23:19:28 2008
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
-<!--Generated with glade3 3.4.5 on Mon Jun 23 08:26:27 2008 -->
+<!--Generated with glade3 3.4.5 on Mon Jun 23 23:52:28 2008 -->
 <glade-interface>
   <widget class="GtkWindow" id="main_window">
     <property name="width_request">800</property>
@@ -68,6 +68,34 @@
               </widget>
             </child>
             <child>
+              <widget class="GtkMenuItem" id="menuitem3">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">_Visa</property>
+                <property name="use_underline">True</property>
+                <child>
+                  <widget class="GtkMenu" id="menu4">
+                    <property name="visible">True</property>
+                    <child>
+                      <widget class="GtkCheckMenuItem" id="show_toolbar_menu_item">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">Toolbar</property>
+                        <property name="use_underline">True</property>
+                        <property name="active">True</property>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkCheckMenuItem" id="show_statusbar_menu_item">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">Statusbar</property>
+                        <property name="use_underline">True</property>
+                        <property name="active">True</property>
+                      </widget>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+            <child>
               <widget class="GtkMenuItem" id="menuitem4">
                 <property name="visible">True</property>
                 <property name="label" translatable="yes">_HjÃlp</property>
@@ -529,8 +557,8 @@
                                           <widget class="GtkFileChooserButton" id="default_folder_filechooserbutton">
                                             <property name="visible">True</property>
                                             <property name="sensitive">False</property>
-                                            <property name="local_only">False</property>
                                             <property name="action">GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER</property>
+                                            <property name="local_only">False</property>
                                             <property name="title" translatable="yes">Select download folder</property>
                                           </widget>
                                         </child>

Modified: trunk/data/gget.schemas.in
==============================================================================
--- trunk/data/gget.schemas.in	(original)
+++ trunk/data/gget.schemas.in	Mon Jun 23 23:19:28 2008
@@ -1,6 +1,28 @@
 <gconfschemafile>
     <schemalist>
         <schema>
+            <key>/schemas/apps/gget/general/show_statusbar</key>
+            <applyto>/apps/gget/general/show_statusbar</applyto>
+            <owner>gget</owner>
+            <type>bool</type>
+            <default>true</default>
+            <locale name="C">
+                <short>Show statusbar</short>
+                <long>Whether GGet should display a statusbar in the main window.</long>
+            </locale>
+        </schema>
+        <schema>
+            <key>/schemas/apps/gget/general/show_toolbar</key>
+            <applyto>/apps/gget/general/show_toolbar</applyto>
+            <owner>gget</owner>
+            <type>bool</type>
+            <default>true</default>
+            <locale name="C">
+                <short>Show toolbar</short>
+                <long>Whether GGet should display a toolbar in the main window.</long>
+            </locale>
+        </schema>
+        <schema>
             <key>/schemas/apps/gget/general/show_status_icon</key>
             <applyto>/apps/gget/general/show_status_icon</applyto>
             <owner>gget</owner>

Modified: trunk/gget/AddDownloadDialog.py
==============================================================================
--- trunk/gget/AddDownloadDialog.py	(original)
+++ trunk/gget/AddDownloadDialog.py	Mon Jun 23 23:19:28 2008
@@ -92,9 +92,9 @@
         download_manager = DownloadManager()
         download_manager.start_download(self.url_entry.get_text(),
                 self.download_filechooserbutton.get_current_folder())
-        self.dialog.hide()
+        self.dialog.destroy()
 
     def __cancel_button_clicked(self, button):
-        self.dialog.hide()
+        self.dialog.destroy()
 
 # vim: set sw=4 et sts=4 tw=79 fo+=l:

Modified: trunk/gget/Configuration.py
==============================================================================
--- trunk/gget/Configuration.py	(original)
+++ trunk/gget/Configuration.py	Mon Jun 23 23:19:28 2008
@@ -28,6 +28,8 @@
 
 DIR_GGET = "/apps/gget"
 
+KEY_SHOW_STATUSBAR   = "/general/show_statusbar"
+KEY_SHOW_TOOLBAR     = "/general/show_toolbar"
 KEY_SHOW_STATUS_ICON = "/general/show_status_icon"
 KEY_SHOW_MAIN_WINDOW = "/general/show_main_window"
 KEY_AUTOSTART        = "/general/autostart"
@@ -35,7 +37,9 @@
 KEY_ASK_FOR_LOCATION = "/folders/ask_for_location"
 KEY_DEFAULT_FOLDER   = "/folders/default_folder"
 
-FUNCTION_SUFFIXES = {KEY_SHOW_STATUS_ICON: 'bool',
+FUNCTION_SUFFIXES = {KEY_SHOW_TOOLBAR:     'bool',
+                     KEY_SHOW_STATUSBAR:   'bool',
+                     KEY_SHOW_STATUS_ICON: 'bool',
                      KEY_SHOW_MAIN_WINDOW: 'bool',
                      KEY_AUTOSTART:        'bool',
                      KEY_AUTORESUME:       'bool',
@@ -99,6 +103,31 @@
                     FUNCTION_SUFFIXES[option])(DIR_GGET + option, value)
             self.option_cache[option] = value
 
+    # Show Statusbar
+    def get_show_statusbar(self, use_cache=True):
+        if use_cache:
+            return self.option_cache[KEY_SHOW_STATUSBAR]
+        else:
+            return self.__get_option(KEY_SHOW_STATUSBAR)
+
+    def set_show_statusbar(self, show_statusbar):
+        self.__set_option(KEY_SHOW_STATUSBAR, show_statusbar)
+
+    show_statusbar = property(get_show_statusbar, set_show_statusbar)
+
+    # Show Toolbar
+    def get_show_toolbar(self, use_cache=True):
+        if use_cache:
+            return self.option_cache[KEY_SHOW_TOOLBAR]
+        else:
+            return self.__get_option(KEY_SHOW_TOOLBAR)
+
+    def set_show_toolbar(self, show_toolbar):
+        self.__set_option(KEY_SHOW_TOOLBAR, show_toolbar)
+
+    show_toolbar = property(get_show_toolbar, set_show_toolbar)
+
+    # Show Status icon
     def get_show_status_icon(self, use_cache=True):
         if use_cache:
             return self.option_cache[KEY_SHOW_STATUS_ICON]
@@ -110,6 +139,7 @@
 
     show_status_icon = property(get_show_status_icon, set_show_status_icon)
 
+    # Show Main window
     def get_show_main_window(self, use_cache=True):
         if use_cache:
             return self.option_cache[KEY_SHOW_MAIN_WINDOW]
@@ -121,6 +151,7 @@
 
     show_main_window = property(get_show_main_window, set_show_main_window)
 
+    # Autostart
     def get_autostart(self, use_cache=True):
         if use_cache:
             return self.option_cache[KEY_AUTOSTART]
@@ -132,6 +163,7 @@
 
     autostart = property(get_autostart, set_autostart)
 
+    # Autoresume
     def get_autoresume(self, use_cache=True):
         if use_cache:
             return self.option_cache[KEY_AUTORESUME]
@@ -143,6 +175,7 @@
 
     autoresume = property(get_autoresume, set_autoresume)
 
+    # Ask for location
     def get_ask_for_location(self, use_cache=True):
         if use_cache:
             return self.option_cache[KEY_ASK_FOR_LOCATION]
@@ -154,6 +187,7 @@
 
     ask_for_location = property(get_ask_for_location, set_ask_for_location)
 
+    # Default folder
     def get_default_folder(self, use_cache=True):
         if use_cache:
             return self.option_cache[KEY_DEFAULT_FOLDER]

Modified: trunk/gget/GUI.py
==============================================================================
--- trunk/gget/GUI.py	(original)
+++ trunk/gget/GUI.py	Mon Jun 23 23:19:28 2008
@@ -68,6 +68,14 @@
     for column in columns:
         column.queue_resize()
 
+def get_selected_value(treeview):
+    selection = treeview.get_selection()
+    (model, iter) = selection.get_selected()
+    if iter:
+        value = model.get_value(iter, 0)
+        return value
+    return None
+
 class ErrorDialog(gtk.MessageDialog):
     def __init__(self, primary_msg, secondary_msg):
         gtk.MessageDialog.__init__(self, parent=None,

Modified: trunk/gget/MainWindow.py
==============================================================================
--- trunk/gget/MainWindow.py	(original)
+++ trunk/gget/MainWindow.py	Mon Jun 23 23:19:28 2008
@@ -24,7 +24,9 @@
 
 import gtk
 import gobject
+import gconf
 
+import Configuration
 import GUI
 import Utils
 from GUI import ErrorDialog
@@ -44,6 +46,13 @@
         self.__make_downloads_treeview()
 
         self.__connect_widgets()
+        self.__add_config_notifications()
+
+        self.show_toolbar_menu_item.set_active(self.config.show_toolbar)
+        self.show_statusbar_menu_item.set_active(self.config.show_statusbar)
+
+        self.toolbar.props.visible = self.config.show_toolbar
+        self.statusbar.props.visible = self.config.show_statusbar
 
     def __get_widgets(self):
         """Get widgets from the glade file."""
@@ -58,10 +67,16 @@
         # Edit menu
         self.preferences_menu_item = xml.get_widget("preferences_menu_item")
 
+        # Show menu
+        self.show_toolbar_menu_item = xml.get_widget("show_toolbar_menu_item")
+        self.show_statusbar_menu_item = xml.get_widget("show_statusbar_menu_item")
+
         # Help menu
         self.about_menu_item = xml.get_widget("about_menu_item")
 
         # Toolbar
+        self.toolbar = xml.get_widget("toolbar")
+
         self.add_tool_button = xml.get_widget("add_tool_button")
         self.pause_tool_button = xml.get_widget("pause_tool_button")
         self.cancel_tool_button = xml.get_widget("cancel_tool_button")
@@ -135,6 +150,21 @@
                 self.__eta_cell_data_func)
         self.downloads_treeview.append_column(eta_treeview_column)
 
+        # Context menu
+        self.downloads_treeview_menu = gtk.Menu()
+        self.pause_imi = gtk.ImageMenuItem(gtk.STOCK_MEDIA_PAUSE)
+        self.pause_imi.show()
+        self.downloads_treeview_menu.append(self.pause_imi)
+
+        self.resume_imi = gtk.ImageMenuItem(_("Resume"))
+        self.resume_imi.get_image().set_from_stock(gtk.STOCK_MEDIA_PLAY,
+                gtk.ICON_SIZE_MENU)
+        self.downloads_treeview_menu.append(self.resume_imi)
+
+        self.cancel_imi = gtk.ImageMenuItem(gtk.STOCK_CANCEL)
+        self.cancel_imi.show()
+        self.downloads_treeview_menu.append(self.cancel_imi)
+
     def __name_cell_data_func(self, column, cell, model, iter):
         """Data function for the name of downloads."""
         download = model.get_value(iter, 0)
@@ -178,16 +208,32 @@
         self.preferences_menu_item.connect("activate",
                 self.preferences_menu_item_activate)
 
+        # Show menu
+        self.show_toolbar_menu_item.connect("toggled",
+                self.__show_toolbar_menu_item_toggled)
+        self.show_statusbar_menu_item.connect("toggled",
+                self.__show_statusbar_menu_item_toggled)
+
         # Help
         self.about_menu_item.connect("activate",
                 self.__about_menu_item_activate)
 
         # Toolbar
         self.add_tool_button.connect("clicked", self.show_add_download_dialog)
+        self.pause_tool_button.connect("clicked",
+                self.__pause_tool_button_clicked)
+        self.cancel_tool_button.connect("clicked", self.__cancel_download)
 
+        # Download treeview
         selection = self.downloads_treeview.get_selection()
         selection.connect("changed",
                 self.__downloads_treeview_selection_changed)
+        self.downloads_treeview.connect("button-press-event",
+                self.__downloads_treeview_button_press,
+                self.downloads_treeview_menu)
+        self.pause_imi.connect("activate", self.__pause_imi_activate)
+        self.resume_imi.connect("activate", self.__resume_imi_activate)
+        self.cancel_imi.connect("activate", self.__cancel_download)
 
     def show_add_download_dialog(self, widget):
         """Show the dialog used for adding a new download."""
@@ -199,25 +245,93 @@
         pd = PreferencesDialog(self.config)
         pd.dialog.show()
 
+    def __show_toolbar_menu_item_toggled(self, menu_item):
+        """Show/Hide toolbar"""
+        self.config.show_toolbar = menu_item.get_active()
+
+    def __show_statusbar_menu_item_toggled(self, menu_item):
+        """Show/Hide statusbar"""
+        self.config.show_statusbar = menu_item.get_active()
+
     def __about_menu_item_activate(self, menu_item):
         """Show the about dialog."""
         ad = AboutDialog()
         ad.run()
 
     def __downloads_treeview_selection_changed(self, selection):
+        """When selection changes set sensitivity appropriately."""
         (downloads_model, downloads_iter) = selection.get_selected()
         if downloads_iter:
             self.pause_tool_button.set_sensitive(True)
+            self.pause_imi.set_sensitive(True)
             self.cancel_tool_button.set_sensitive(True)
+            self.cancel_imi.set_sensitive(True)
         else:
             self.pause_tool_button.set_sensitive(False)
+            self.pause_imi.set_sensitive(False)
             self.cancel_tool_button.set_sensitive(False)
+            self.cancel_imi.set_sensitive(False)
+
+    def __downloads_treeview_button_press(self, treeview, event, menu):
+        """Show context menu for downloads treeview"""
+        if event.type == gtk.gdk.BUTTON_PRESS and event.button == 3:
+            menu.popup(None, None, None, event.button, event.time)
+
+    def __pause_tool_button_clicked(self, tool_button):
+        download = GUI.get_selected_value(self.downloads_treeview)
+        if download:
+            stock = tool_button.get_stock_id()
+            if stock == gtk.STOCK_MEDIA_PAUSE:
+                tool_button.set_stock_id(gtk.STOCK_MEDIA_PLAY)
+                tool_button.set_label(_("Resume"))
+            else:
+                tool_button.set_stock_id(gtk.STOCK_MEDIA_PAUSE)
+                tool_button.set_label(None)
+
+    def __pause_imi_activate(self, imagemenuitem):
+        download = GUI.get_selected_value(self.downloads_treeview)
+        if download:
+            imagemenuitem.hide()
+            self.resume_imi.show()
+
+    def __resume_imi_activate(self, imagemenuitem):
+        download = GUI.get_selected_value(self.downloads_treeview)
+        if download:
+            imagemenuitem.hide()
+            self.pause_imi.show()
+
+    def __cancel_download(self, widget):
+        download = GUI.get_selected_value(self.downloads_treeview)
+        if download:
+            pass
 
     def quit(self, widget):
         """Quits the application. Called from various places."""
         # TODO: Shutdown gracefully
         gtk.main_quit()
 
+    def __add_config_notifications(self):
+        self.config.add_notify(Configuration.KEY_SHOW_TOOLBAR,
+                self.__show_toolbar_key_changed)
+        self.config.add_notify(Configuration.KEY_SHOW_STATUSBAR,
+                self.__show_statusbar_key_changed)
+
+    def __show_toolbar_key_changed(self, client, cnxn_id, entry, data):
+        if not entry.value:
+            self.toolbar.props.visible = True
+        elif entry.value.type == gconf.VALUE_BOOL:
+            self.toolbar.props.visible = entry.value.get_bool()
+        else:
+            self.toolbar.props.visible = True
+
+    def __show_statusbar_key_changed(self, client, cnxn_id, entry, data):
+        if not entry.value:
+            self.statusbar.props.visible = True
+        elif entry.value.type == gconf.VALUE_BOOL:
+            self.statusbar.props.visible = entry.value.get_bool()
+        else:
+            self.statusbar.props.visible = True
+
     def __download_added(self, download_manager, download):
         """Called when a new download is added to DownloadManager. Adds the
         download to the treeview model and sets up the update handler."""



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]