Changeset 7659 for trunk/src/filetransfers_window.py
- Timestamp:
- 12/15/06 19:59:24 (2 years ago)
- Files:
-
- 1 modified
-
trunk/src/filetransfers_window.py (modified) (44 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/filetransfers_window.py
r7268 r7659 60 60 self.tree.set_model(self.model) 61 61 col = gtk.TreeViewColumn() 62 62 63 63 render_pixbuf = gtk.CellRendererPixbuf() 64 64 65 65 col.pack_start(render_pixbuf, expand = True) 66 66 render_pixbuf.set_property('xpad', 3) … … 69 69 col.add_attribute(render_pixbuf, 'pixbuf', 0) 70 70 self.tree.append_column(col) 71 71 72 72 col = gtk.TreeViewColumn(_('File')) 73 73 renderer = gtk.CellRendererText() … … 84 84 col.set_expand(True) 85 85 self.tree.append_column(col) 86 86 87 87 col = gtk.TreeViewColumn(_('Time')) 88 88 renderer = gtk.CellRendererText() … … 96 96 col.set_expand(False) 97 97 self.tree.append_column(col) 98 98 99 99 col = gtk.TreeViewColumn(_('Progress')) 100 100 renderer = gtk.CellRendererProgress() … … 107 107 col.set_expand(False) 108 108 self.tree.append_column(col) 109 109 110 110 self.set_images() 111 111 self.tree.get_selection().set_mode(gtk.SELECTION_SINGLE) … … 121 121 self.remove_menuitem = self.xml.get_widget('remove_menuitem') 122 122 self.xml.signal_autoconnect(self) 123 123 124 124 def find_transfer_by_jid(self, account, jid): 125 125 ''' find all transfers with peer 'jid' that belong to 'account' ''' 126 126 active_transfers = [[],[]] # ['senders', 'receivers'] 127 127 128 128 # 'account' is the sender 129 129 for file_props in self.files_props['s'].values(): … … 133 133 if not self.is_transfer_stoped(file_props): 134 134 active_transfers[0].append(file_props) 135 135 136 136 # 'account' is the recipient 137 137 for file_props in self.files_props['r'].values(): … … 142 142 active_transfers[1].append(file_props) 143 143 return active_transfers 144 144 145 145 def show_completed(self, jid, file_props): 146 146 ''' show a dialog saying that file (file_props) has been transferred''' … … 387 387 self.images['ok'] = self.window.render_icon(gtk.STOCK_APPLY, 388 388 gtk.ICON_SIZE_MENU) 389 389 390 390 def set_status(self, typ, sid, status): 391 391 ''' change the status of a transfer to state 'status' ''' … … 400 400 file_props['completed'] = True 401 401 self.model.set(iter, C_IMAGE, self.images[status]) 402 402 path = self.model.get_path(iter) 403 self.select_func(path) 404 403 405 def _format_percent(self, percent): 404 406 ''' add extra spaces from both sides of the percent, so that … … 411 413 _str += unicode(percent) + '% \n' 412 414 return _str 413 415 414 416 def _format_time(self, _time): 415 417 times = { 'hours': 0, 'minutes': 0, 'seconds': 0 } … … 421 423 if _time >= 60: 422 424 times['hours'] = _time / 60 423 425 424 426 #Print remaining time in format 00:00:00 425 427 #You can change the places of (hours), (minutes), (seconds) - 426 428 #they are not translatable. 427 429 return _('%(hours)02.d:%(minutes)02.d:%(seconds)02.d') % times 428 430 429 431 def _get_eta_and_speed(self, full_size, transfered_size, elapsed_time): 430 432 if elapsed_time == 0: … … 436 438 eta = remaining_size / speed 437 439 return eta, speed 438 440 439 441 def _remove_transfer(self, iter, sid, file_props): 440 442 self.model.remove(iter) … … 462 464 del(self.files_props[sid[0]][sid[1:]]) 463 465 del(file_props) 464 466 465 467 def set_progress(self, typ, sid, transfered_size, iter = None): 466 468 ''' change the progress of a transfer with new transfered size''' … … 476 478 iter = self.get_iter_by_sid(typ, sid) 477 479 if iter is not None: 480 just_began = False 481 if self.model[iter][C_PERCENT] == 0 and int(percent > 0): 482 just_began = True 478 483 text = self._format_percent(percent) 479 484 if transfered_size == 0: … … 483 488 text += '/' + helpers.convert_bytes(full_size) 484 489 # Kb/s 485 490 486 491 # remaining time 487 492 if file_props.has_key('offset') and file_props['offset']: … … 490 495 eta, speed = self._get_eta_and_speed(full_size, transfered_size, 491 496 file_props['elapsed-time']) 492 497 493 498 self.model.set(iter, C_PROGRESS, text) 494 499 self.model.set(iter, C_PERCENT, int(percent)) … … 501 506 helpers.convert_bytes(speed)} 502 507 self.model.set(iter, C_TIME, text) 503 508 504 509 # try to guess what should be the status image 505 510 if file_props['type'] == 'r': … … 516 521 if transfered_size == full_size: 517 522 self.set_status(typ, sid, 'ok') 518 523 elif just_began: 524 path = self.model.get_path(iter) 525 self.select_func(path) 526 519 527 def get_iter_by_sid(self, typ, sid): 520 528 '''returns iter to the row, which holds file transfer, identified by the … … 525 533 return iter 526 534 iter = self.model.iter_next(iter) 527 535 528 536 def get_send_file_props(self, account, contact, file_path, file_name): 529 537 ''' create new file_props dict and set initial file transfer … … 549 557 file_props['tt_account'] = account 550 558 return file_props 551 559 552 560 def add_transfer(self, account, contact, file_props): 553 561 ''' add new transfer to FT window and show the FT window ''' … … 563 571 else: 564 572 text_labels += '<b>' + _('Recipient: ') + '</b>' 565 573 566 574 if file_props['type'] == 'r': 567 575 (file_path, file_name) = os.path.split(file_props['file-name']) … … 583 591 self.set_cleanup_sensitivity() 584 592 self.window.show_all() 585 593 586 594 def on_transfers_list_motion_notify_event(self, widget, event): 587 595 pointer = self.tree.get_pointer() … … 607 615 self.tooltip.timeout = gobject.timeout_add(500, 608 616 self.show_tooltip, widget) 609 617 610 618 def on_transfers_list_leave_notify_event(self, widget = None, event = None): 611 619 if event is not None: … … 619 627 if not props or self.tooltip.id == props[0]: 620 628 self.tooltip.hide_tooltip() 621 629 622 630 def on_transfers_list_row_activated(self, widget, path, col): 623 631 # try to open the containing folder 624 632 self.on_open_folder_menuitem_activate(widget) 625 633 626 634 def is_transfer_paused(self, file_props): 627 635 if file_props.has_key('stopped') and file_props['stopped']: … … 632 640 return False 633 641 return file_props['paused'] 634 642 635 643 def is_transfer_active(self, file_props): 636 644 if file_props.has_key('stopped') and file_props['stopped']: … … 643 651 return True 644 652 return not file_props['paused'] 645 653 646 654 def is_transfer_stoped(self, file_props): 647 655 if file_props.has_key('error') and file_props['error'] != 0: … … 662 670 else: 663 671 self.cleanup_button.set_sensitive(True) 664 672 665 673 def set_all_insensitive(self): 666 674 ''' make all buttons/menuitems insensitive ''' … … 673 681 self.open_folder_menuitem.set_sensitive(False) 674 682 self.set_cleanup_sensitivity() 675 683 676 684 def set_buttons_sensitive(self, path, is_row_selected): 677 685 ''' make buttons/menuitems sensitive as appropriate to … … 711 719 self.continue_menuitem.set_sensitive(False) 712 720 return True 713 721 714 722 def selection_changed(self, args): 715 723 ''' selection has changed - change the sensitivity of the … … 722 730 else: 723 731 self.set_all_insensitive() 724 732 725 733 def select_func(self, path): 726 734 is_selected = False … … 733 741 self.set_cleanup_sensitivity() 734 742 return True 735 743 736 744 def on_cleanup_button_clicked(self, widget): 737 745 i = len(self.model) - 1 … … 745 753 self.tree.get_selection().unselect_all() 746 754 self.set_all_insensitive() 747 755 748 756 def toggle_pause_continue(self, status): 749 757 if status: … … 752 760 self.pause_button.set_image(gtk.image_new_from_stock( 753 761 gtk.STOCK_MEDIA_PAUSE, gtk.ICON_SIZE_MENU)) 754 762 755 763 self.pause_menuitem.set_sensitive(True) 756 764 self.pause_menuitem.set_no_show_all(False) 757 765 self.continue_menuitem.hide() 758 766 self.continue_menuitem.set_no_show_all(True) 759 767 760 768 else: 761 769 label = _('_Continue') … … 767 775 self.continue_menuitem.set_sensitive(True) 768 776 self.continue_menuitem.set_no_show_all(False) 769 777 770 778 def on_pause_restore_button_clicked(self, widget): 771 779 selected = self.tree.get_selection().get_selected() … … 786 794 self.set_status(file_props['type'], file_props['sid'], 'pause') 787 795 self.toggle_pause_continue(False) 788 796 789 797 def on_cancel_button_clicked(self, widget): 790 798 selected = self.tree.get_selection().get_selected() … … 801 809 gajim.connections[account].disconnect_transfer(file_props) 802 810 self.set_status(file_props['type'], file_props['sid'], 'stop') 803 811 804 812 def show_tooltip(self, widget): 805 813 if self.height_diff == 0: … … 823 831 else: 824 832 self.tooltip.hide_tooltip() 825 833 826 834 def on_notify_ft_complete_checkbox_toggled(self, widget): 827 835 gajim.config.set('notify_on_file_complete', 828 836 widget.get_active()) 829 837 830 838 def on_file_transfers_dialog_delete_event(self, widget, event): 831 839 self.on_transfers_list_leave_notify_event(widget, None) 832 840 self.window.hide() 833 841 return True # do NOT destory window 834 842 835 843 def on_close_button_clicked(self, widget): 836 844 self.window.hide() … … 842 850 path = self.model.get_path(iter) 843 851 self.set_buttons_sensitive(path, True) 844 852 845 853 event_button = gtkgui_helpers.get_possible_button_event(event) 846 854 self.file_transfers_menu.show_all() 847 855 self.file_transfers_menu.popup(None, self.tree, None, 848 856 event_button, event.time) 849 857 850 858 def on_transfers_list_key_press_event(self, widget, event): 851 859 '''when a key is pressed in the treeviews''' … … 856 864 except TypeError: 857 865 self.tree.get_selection().unselect_all() 858 866 859 867 if iter is not None: 860 868 path = self.model.get_path(iter) 861 869 self.tree.get_selection().select_path(path) 862 870 863 871 if event.keyval == gtk.keysyms.Menu: 864 872 self.show_context_menu(event, iter) 865 873 return True 866 867 874 875 868 876 def on_transfers_list_button_release_event(self, widget, event): 869 877 # hide tooltip, no matter the button is pressed … … 879 887 else: 880 888 self.select_func(path) 881 889 882 890 def on_transfers_list_button_press_event(self, widget, event): 883 891 # hide tooltip, no matter the button is pressed … … 896 904 if path is not None: 897 905 return True 898 906 899 907 def on_open_folder_menuitem_activate(self, widget): 900 908 selected = self.tree.get_selection().get_selected() … … 909 917 if os.path.exists(path) and os.path.isdir(path): 910 918 helpers.launch_file_manager(path) 911 919 912 920 def on_cancel_menuitem_activate(self, widget): 913 921 self.on_cancel_button_clicked(widget) 914 922 915 923 def on_continue_menuitem_activate(self, widget): 916 924 self.on_pause_restore_button_clicked(widget) 917 925 918 926 def on_pause_menuitem_activate(self, widget): 919 927 self.on_pause_restore_button_clicked(widget) 920 928 921 929 def on_remove_menuitem_activate(self, widget): 922 930 selected = self.tree.get_selection().get_selected() … … 932 940 if event.keyval == gtk.keysyms.Escape: # ESCAPE 933 941 self.window.hide() 934 942
