Changeset 2943

Show
Ignore:
Timestamp:
08/10/05 18:00:39 (3 years ago)
Author:
dkirov
Message:

buttons sensitiveness now works

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/dialogs.py

    r2934 r2943  
    15961596                self.tree.append_column(col) 
    15971597                self.set_images() 
    1598                 self.tree.get_selection().set_select_function(self.select_func) 
     1598                self.tree.get_selection().set_mode(gtk.SELECTION_SINGLE) 
    15991599                self.tooltip = FileTransfersTooltip() 
    16001600                self.xml.signal_autoconnect(self) 
     
    16051605                self.stop_menuitem = popup_xml.get_widget('stop_menuitem') 
    16061606                self.pause_menuitem = popup_xml.get_widget('pause_menuitem') 
     1607                self.continue_menuitem = popup_xml.get_widget('continue_menuitem') 
    16071608                self.remove_menuitem = popup_xml.get_widget('remove_menuitem') 
    16081609                self.clean_up_menuitem = popup_xml.get_widget('clean_up_menuitem') 
     1610                self.pause_button.set_image(gtk.image_new_from_stock( 
     1611                gtk.STOCK_MEDIA_PAUSE, gtk.ICON_SIZE_MENU)) 
    16091612                popup_xml.signal_autoconnect(self) 
    16101613                 
     
    17311734                self.images['pause'] = self.window.render_icon(gtk.STOCK_MEDIA_PAUSE,  
    17321735                        gtk.ICON_SIZE_MENU) 
     1736                self.images['continue'] = self.window.render_icon(gtk.STOCK_MEDIA_PLAY,  
     1737                        gtk.ICON_SIZE_MENU) 
    17331738                self.images['ok'] = self.window.render_icon(gtk.STOCK_APPLY,  
    17341739                        gtk.ICON_SIZE_MENU) 
     
    18791884                 
    18801885        def is_transfer_paused(self, file_props): 
    1881                 if file_props.has_key('error') and file_props['error'] != 0: 
     1886                if file_props.has_key('stopped') and file_props['stopped']: 
    18821887                        return False 
    18831888                if file_props['completed']: 
    18841889                        return False 
    1885                 if file_props.has_key('disconnect_cb') or \ 
    1886                         file_props['disconnect_cb'] is None: 
     1890                if not file_props.has_key('disconnect_cb'): 
    18871891                        return False 
    18881892                return file_props['paused'] 
    18891893                 
    18901894        def is_transfer_active(self, file_props): 
    1891                 if file_props.has_key('error') and file_props['error'] != 0: 
     1895                if file_props.has_key('stopped') and file_props['stopped']: 
    18921896                        return False 
    1893                 if file_props['completed'] or file_props['disconnect_cb'] is None: 
    1894                         return False 
     1897                         
     1898                if file_props['completed']: 
     1899                        pass 
     1900                         
    18951901                return not file_props['paused'] 
    18961902                 
     
    19001906                if file_props.has_key('completed') and file_props['completed']: 
    19011907                        return True 
    1902                 if file_props.has_key('disconnect_cb') and \ 
    1903                         file_props['disconnect_cb'] is not None: 
     1908                if not file_props.has_key('stopped') or not \ 
     1909                        file_props['stopped']: 
    19041910                        return False 
    19051911                return True 
    1906          
    1907         def select_func(self, path): 
    1908                 is_selected = False 
     1912                 
     1913        def set_all_insensitive(self): 
     1914                self.pause_button.set_sensitive(False) 
     1915                self.pause_menuitem.set_sensitive(False) 
     1916                self.continue_menuitem.set_sensitive(False) 
     1917                self.remove_button.set_sensitive(False) 
     1918                self.remove_menuitem.set_sensitive(False) 
     1919                self.cancel_button.set_sensitive(False) 
     1920                self.stop_menuitem.set_sensitive(False) 
     1921         
     1922        def set_buttons_sensitive(self, path, is_row_selected): 
    19091923                current_iter = self.model.get_iter(path) 
    1910                 selected = self.tree.get_selection().get_selected() 
    1911                 if selected[1] != None: 
    1912                         selected_path = self.model.get_path(selected[1]) 
    1913                         if selected_path == path: 
    1914                                 is_selected = True 
    19151924                sid = self.model[current_iter][4] 
    19161925                file_props = self.files_props[sid[0]][sid[1:]] 
    1917                 self.remove_button.set_sensitive(not is_selected) 
    1918                 self.remove_menuitem.set_sensitive(not is_selected) 
     1926                self.remove_button.set_sensitive(is_row_selected) 
     1927                self.remove_menuitem.set_sensitive(is_row_selected) 
     1928                is_stopped = False 
    19191929                if self.is_transfer_stoped(file_props): 
    1920                         is_selected = True 
    1921                 self.cancel_button.set_sensitive(not is_selected) 
    1922                 self.stop_menuitem.set_sensitive(not is_selected) 
    1923                 if is_selected: 
    1924                         self.pause_button.set_sensitive(False) 
    1925                         self.pause_menuitem.set_sensitive(False) 
    1926                 else: 
     1930                        is_stopped = True 
     1931                self.cancel_button.set_sensitive(not is_stopped) 
     1932                self.stop_menuitem.set_sensitive(not is_stopped) 
     1933                if not is_row_selected: 
     1934                        # no selection, disable the buttons 
     1935                        self.set_all_insensitive() 
     1936                elif not is_stopped: 
    19271937                        if self.is_transfer_active(file_props): 
     1938                                # file transfer is active 
     1939                                self.toggle_pause_continue(True) 
    19281940                                self.pause_button.set_sensitive(True) 
    1929                                 self.pause_menuitem.set_sensitive(True) 
    1930                                 label = _('_Pause') 
    1931                                 self.pause_button.set_label(label) 
    1932                                 self.pause_menuitem.set_label(label) 
    19331941                        elif self.is_transfer_paused(file_props): 
     1942                                # file transfer is paused 
     1943                                self.toggle_pause_continue(False) 
    19341944                                self.pause_button.set_sensitive(True) 
    1935                                 label = _('_Continue') 
    1936                                 self.pause_button.set_label(label) 
    1937                                 self.pause_menuitem.set_label(label) 
    19381945                        else: 
    19391946                                self.pause_button.set_sensitive(False) 
    19401947                                self.pause_menuitem.set_sensitive(False) 
     1948                                self.continue_menuitem.set_sensitive(False) 
    19411949                return True 
    1942  
     1950         
     1951        def select_func(self, path): 
     1952                is_selected = False 
     1953                selected = self.tree.get_selection().get_selected_rows() 
     1954                if selected[1] != []: 
     1955                        selected_path = selected[1][0] 
     1956                        if selected_path == path: 
     1957                                is_selected = True 
     1958                self.set_buttons_sensitive(path, is_selected) 
     1959                return True 
     1960         
    19431961        def on_remove_button_clicked(self, widget): 
    19441962                selected = self.tree.get_selection().get_selected() 
     
    19481966                sid = self.model[s_iter][4] 
    19491967                file_props = self.files_props[sid[0]][sid[1:]] 
    1950                 if not self.is_transfer_stoped(file_props): 
    1951                         file_props['disconnect_cb']() 
     1968                if not file_props.has_key('tt_account'): 
     1969                        # file transfer is not set yet 
     1970                        return  
     1971                account = file_props['tt_account'] 
     1972                if not gajim.connections.has_key(account): 
     1973                        # no connection to the account 
     1974                        return 
     1975                gajim.connections[account].remove_transfer(file_props) 
    19521976                self.model.remove(s_iter) 
    1953                 self.remove_button.set_sensitive(False) 
    1954                 self.remove_menuitem.set_sensitive(False) 
     1977                self.set_all_insensitive() 
     1978         
     1979        def toggle_pause_continue(self, status): 
     1980                if status: 
     1981                        label = _('Pause') 
     1982                        self.pause_button.set_label(label) 
     1983                        self.pause_button.set_image(gtk.image_new_from_stock( 
     1984                        gtk.STOCK_MEDIA_PAUSE, gtk.ICON_SIZE_MENU)) 
     1985                         
     1986                        self.pause_menuitem.set_sensitive(True) 
     1987                        self.pause_menuitem.set_no_show_all(False) 
     1988                        self.continue_menuitem.hide() 
     1989                        self.continue_menuitem.set_no_show_all(True) 
     1990                         
     1991                else: 
     1992                        label = _('_Continue') 
     1993                        self.pause_button.set_label(label) 
     1994                        self.pause_button.set_image(gtk.image_new_from_stock( 
     1995                        gtk.STOCK_MEDIA_PLAY, gtk.ICON_SIZE_MENU)) 
     1996                        self.pause_menuitem.hide() 
     1997                        self.pause_menuitem.set_no_show_all(True) 
     1998                        self.continue_menuitem.set_sensitive(True) 
     1999                        self.continue_menuitem.set_no_show_all(False) 
    19552000         
    19562001        def on_pause_restore_button_clicked(self, widget): 
     
    19652010                        types = {'r' : 'download', 's' : 'upload'} 
    19662011                        self.set_status(file_props['type'], file_props['sid'], types[sid[0]]) 
    1967                         widget.set_label(_('Pause')) 
     2012                        self.toggle_pause_continue(True) 
    19682013                elif self.is_transfer_active(file_props): 
    19692014                        file_props['paused'] = True 
    19702015                        self.set_status(file_props['type'], file_props['sid'], 'pause') 
    1971                         widget.set_label(_('_Continue')) 
     2016                        self.toggle_pause_continue(False) 
    19722017                 
    19732018        def on_cancel_button_clicked(self, widget): 
     
    19772022                s_iter = selected[1] 
    19782023                sid = self.model[s_iter][4] 
    1979                  
    19802024                file_props = self.files_props[sid[0]][sid[1:]] 
    1981                 if not self.is_transfer_stoped(file_props): 
    1982                         file_props['disconnect_cb']() 
     2025                if not file_props.has_key('tt_account'): 
     2026                        return  
     2027                account = file_props['tt_account'] 
     2028                if not gajim.connections.has_key(account): 
     2029                        return 
     2030                gajim.connections[account].disconnect_transfer(file_props) 
    19832031                self.set_status(file_props['type'], file_props['sid'], 'stop') 
    19842032         
     
    20162064 
    20172065        def show_context_menu(self, event, iter): 
     2066                # change the sensitive propery of the buttons and menuitems 
     2067                path = self.model.get_path(iter) 
     2068                self.set_buttons_sensitive(path, True) 
     2069                 
    20182070                event_button = self.get_possible_button_event(event) 
    20192071                self.file_transfers_menu.popup(None, self.tree, None,  
     
    20472099                        return True 
    20482100                         
     2101         
     2102        def on_transfers_list_button_release_event(self, widget, event): 
     2103                # hide tooltip, no matter the button is pressed 
     2104                self.tooltip.hide_tooltip() 
     2105                try: 
     2106                        path, column, x, y = self.tree.get_path_at_pos(int(event.x),  
     2107                                int(event.y)) 
     2108                except TypeError: 
     2109                        self.tree.get_selection().unselect_all() 
     2110                        return 
     2111                self.select_func(path) 
     2112                         
    20492113        def on_transfers_list_button_press_event(self, widget, event): 
    20502114                # hide tooltip, no matter the button is pressed 
    20512115                self.tooltip.hide_tooltip() 
     2116                try: 
     2117                        path, column, x, y = self.tree.get_path_at_pos(int(event.x),  
     2118                                int(event.y)) 
     2119                except TypeError: 
     2120                        self.tree.get_selection().unselect_all() 
     2121                        return 
    20522122                if event.button == 3: # Right click 
    2053                         try: 
    2054                                 path, column, x, y = self.tree.get_path_at_pos(int(event.x),  
    2055                                         int(event.y)) 
    2056                         except TypeError: 
    2057                                 self.tree.get_selection().unselect_all() 
    2058                                 return 
    20592123                        self.tree.get_selection().select_path(path) 
    20602124                        model = self.tree.get_model() 
     
    20622126                        self.show_context_menu(event, iter) 
    20632127                        return True 
     2128                 
    20642129         
    20652130        def on_clean_up_menuitem_activate(self, widget): 
     
    20712136                        if file_props.has_key('completed') and file_props['completed']: 
    20722137                                self.model.remove(iter) 
     2138                        elif file_props.has_key('stopped') and file_props['stopped']: 
     2139                                self.model.remove(iter) 
    20732140                        i -= 1 
    20742141                         
     
    20822149                self.on_cancel_button_clicked(widget) 
    20832150                 
     2151        def on_continue_menuitem_activate(self, widget): 
     2152                self.on_pause_restore_button_clicked(widget) 
     2153         
    20842154        def on_pause_menuitem_activate(self, widget): 
    20852155                self.on_pause_restore_button_clicked(widget)