diff --git a/src/jarabe/frame/activitiestray.py b/src/jarabe/frame/activitiestray.py
index ddf395f..85e7fe4 100644
a
|
b
|
from sugar3.graphics.radiotoolbutton import RadioToolButton |
34 | 34 | from sugar3.graphics.toolbutton import ToolButton |
35 | 35 | from sugar3.graphics.icon import Icon, get_icon_file_name |
36 | 36 | from sugar3.graphics.palette import Palette |
| 37 | from sugar3.graphics.palettemenu import PaletteMenuBox |
| 38 | from sugar3.graphics.palettemenu import PaletteMenuItem |
| 39 | from sugar3.graphics.palettemenu import PaletteMenuItemSeparator |
37 | 40 | from sugar3.graphics.menuitem import MenuItem |
38 | 41 | from sugar3.datastore import datastore |
39 | 42 | from sugar3 import mime |
… |
… |
class BaseTransferButton(ToolButton): |
348 | 351 | self.notif_icon.connect('button-release-event', |
349 | 352 | self.__button_release_event_cb) |
350 | 353 | |
351 | | self.connect('clicked', self.__button_clicked_cb) |
| 354 | self.props.hide_tooltip_on_click = False |
352 | 355 | |
353 | 356 | def __button_release_event_cb(self, icon, event): |
354 | 357 | if self.notif_icon is not None: |
… |
… |
class BaseTransferButton(ToolButton): |
356 | 359 | frame.remove_notification(self.notif_icon) |
357 | 360 | self.notif_icon = None |
358 | 361 | |
359 | | def __button_clicked_cb(self, button): |
360 | | self.palette.popup(immediate=True, state=Palette.SECONDARY) |
361 | | |
362 | 362 | def remove(self): |
363 | 363 | frame = jarabe.frame.get_view() |
364 | 364 | frame.remove_notification(self.notif_icon) |
… |
… |
class IncomingTransferButton(BaseTransferButton): |
407 | 407 | palette = IncomingTransferPalette(self.file_transfer) |
408 | 408 | palette.connect('dismiss-clicked', self.__dismiss_clicked_cb) |
409 | 409 | palette.props.invoker = FrameWidgetInvoker(self) |
| 410 | palette.props.invoker.props.toggle_palette = True |
410 | 411 | palette.set_group_id('frame') |
411 | 412 | return palette |
412 | 413 | |
… |
… |
class OutgoingTransferButton(BaseTransferButton): |
483 | 484 | palette = OutgoingTransferPalette(self.file_transfer) |
484 | 485 | palette.connect('dismiss-clicked', self.__dismiss_clicked_cb) |
485 | 486 | palette.props.invoker = FrameWidgetInvoker(self) |
| 487 | palette.props.invoker.props.toggle_palette = True |
486 | 488 | palette.set_group_id('frame') |
487 | 489 | return palette |
488 | 490 | |
… |
… |
class IncomingTransferPalette(BaseTransferPalette): |
575 | 577 | def _update(self): |
576 | 578 | logging.debug('_update state: %r', self.file_transfer.props.state) |
577 | 579 | if self.file_transfer.props.state == filetransfer.FT_STATE_PENDING: |
578 | | menu_item = MenuItem(_('Accept'), icon_name='dialog-ok') |
| 580 | box = PaletteMenuBox() |
| 581 | self.set_content(box) |
| 582 | box.show() |
| 583 | |
| 584 | menu_item = PaletteMenuItem(_('Accept'), icon_name='dialog-ok') |
579 | 585 | menu_item.connect('activate', self.__accept_activate_cb) |
580 | | self.menu.append(menu_item) |
| 586 | box.append_item(menu_item) |
581 | 587 | menu_item.show() |
582 | 588 | |
583 | | menu_item = MenuItem(_('Decline'), icon_name='dialog-cancel') |
| 589 | menu_item = PaletteMenuItem(_('Decline'), icon_name='dialog-cancel') |
584 | 590 | menu_item.connect('activate', self.__decline_activate_cb) |
585 | | self.menu.append(menu_item) |
| 591 | box.append_item(menu_item) |
586 | 592 | menu_item.show() |
587 | 593 | |
588 | | vbox = Gtk.VBox() |
589 | | self.set_content(vbox) |
590 | | vbox.show() |
| 594 | separator = PaletteMenuItemSeparator() |
| 595 | box.append_item(separator) |
| 596 | separator.show() |
591 | 597 | |
592 | 598 | if self.file_transfer.description: |
593 | 599 | label = Gtk.Label(label=self.file_transfer.description) |
594 | | vbox.add(label) |
| 600 | box.append_item(label, vertical_padding=0) |
595 | 601 | label.show() |
596 | 602 | |
597 | 603 | mime_type = self.file_transfer.mime_type |
… |
… |
class IncomingTransferPalette(BaseTransferPalette): |
599 | 605 | |
600 | 606 | size = self._format_size(self.file_transfer.file_size) |
601 | 607 | label = Gtk.Label(label='%s (%s)' % (size, type_description)) |
602 | | vbox.add(label) |
| 608 | box.append_item(label, vertical_padding=0) |
603 | 609 | label.show() |
604 | 610 | |
605 | 611 | elif self.file_transfer.props.state in \ |
606 | 612 | [filetransfer.FT_STATE_ACCEPTED, filetransfer.FT_STATE_OPEN]: |
| 613 | box = PaletteMenuBox() |
| 614 | self.set_content(box) |
| 615 | box.show() |
607 | 616 | |
608 | | for item in self.menu.get_children(): |
609 | | self.menu.remove(item) |
610 | | |
611 | | menu_item = MenuItem(_('Cancel'), icon_name='dialog-cancel') |
| 617 | menu_item = PaletteMenuItem(_('Cancel'), icon_name='dialog-cancel') |
612 | 618 | menu_item.connect('activate', self.__cancel_activate_cb) |
613 | | self.menu.append(menu_item) |
| 619 | box.append_item(menu_item) |
614 | 620 | menu_item.show() |
615 | 621 | |
616 | | vbox = Gtk.VBox() |
617 | | self.set_content(vbox) |
618 | | vbox.show() |
| 622 | separator = PaletteMenuItemSeparator() |
| 623 | box.append_item(separator) |
| 624 | separator.show() |
619 | 625 | |
620 | 626 | self.progress_bar = Gtk.ProgressBar() |
621 | | vbox.add(self.progress_bar) |
| 627 | box.append_item(self.progress_bar) |
622 | 628 | self.progress_bar.show() |
623 | 629 | |
624 | 630 | self.progress_label = Gtk.Label(label='') |
625 | | vbox.add(self.progress_label) |
| 631 | box.append_item(self.progress_label) |
626 | 632 | self.progress_label.show() |
627 | 633 | |
628 | 634 | self.update_progress() |
629 | 635 | |
630 | 636 | elif self.file_transfer.props.state == filetransfer.FT_STATE_COMPLETED: |
| 637 | box = PaletteMenuBox() |
| 638 | self.set_content(box) |
| 639 | box.show() |
631 | 640 | |
632 | | for item in self.menu.get_children(): |
633 | | self.menu.remove(item) |
634 | | |
635 | | menu_item = MenuItem(_('Dismiss'), icon_name='dialog-cancel') |
| 641 | menu_item = PaletteMenuItem(_('Dismiss'), icon_name='dialog-cancel') |
636 | 642 | menu_item.connect('activate', self.__dismiss_activate_cb) |
637 | | self.menu.append(menu_item) |
| 643 | box.append_item(menu_item) |
638 | 644 | menu_item.show() |
639 | 645 | |
640 | 646 | self.update_progress() |
641 | | elif self.file_transfer.props.state == filetransfer.FT_STATE_CANCELLED: |
642 | 647 | |
643 | | for item in self.menu.get_children(): |
644 | | self.menu.remove(item) |
| 648 | elif self.file_transfer.props.state == filetransfer.FT_STATE_CANCELLED: |
| 649 | box = PaletteMenuBox() |
| 650 | self.set_content(box) |
| 651 | box.show() |
645 | 652 | |
646 | 653 | if self.file_transfer.reason_last_change == \ |
647 | 654 | filetransfer.FT_REASON_REMOTE_STOPPED: |
648 | | menu_item = MenuItem(_('Dismiss'), icon_name='dialog-cancel') |
| 655 | menu_item = PaletteMenuItem(_('Dismiss'), icon_name='dialog-cancel') |
649 | 656 | menu_item.connect('activate', self.__dismiss_activate_cb) |
650 | | self.menu.append(menu_item) |
| 657 | box.append_item(menu_item) |
651 | 658 | menu_item.show() |
| 659 | |
| 660 | separator = PaletteMenuItemSeparator() |
| 661 | box.append_item(separator) |
| 662 | separator.show() |
| 663 | |
652 | 664 | text = _('The other participant canceled the file transfer') |
653 | 665 | label = Gtk.Label(label=text) |
654 | | self.set_content(label) |
| 666 | box.append_item(label) |
655 | 667 | label.show() |
656 | 668 | |
657 | 669 | def __accept_activate_cb(self, menu_item): |
… |
… |
class OutgoingTransferPalette(BaseTransferPalette): |
709 | 721 | new_state = self.file_transfer.props.state |
710 | 722 | logging.debug('_update state: %r', new_state) |
711 | 723 | if new_state == filetransfer.FT_STATE_PENDING: |
| 724 | box = PaletteMenuBox() |
| 725 | self.set_content(box) |
| 726 | box.show() |
712 | 727 | |
713 | | menu_item = MenuItem(_('Cancel'), icon_name='dialog-cancel') |
| 728 | menu_item = PaletteMenuItem(_('Cancel'), icon_name='dialog-cancel') |
714 | 729 | menu_item.connect('activate', self.__cancel_activate_cb) |
715 | | self.menu.append(menu_item) |
| 730 | box.append_item(menu_item) |
716 | 731 | menu_item.show() |
717 | 732 | |
718 | | vbox = Gtk.VBox() |
719 | | self.set_content(vbox) |
720 | | vbox.show() |
| 733 | separator = PaletteMenuItemSeparator() |
| 734 | box.append_item(separator) |
| 735 | separator.show() |
721 | 736 | |
722 | 737 | if self.file_transfer.description: |
723 | 738 | label = Gtk.Label(label=self.file_transfer.description) |
724 | | vbox.add(label) |
| 739 | box.append_item(label) |
725 | 740 | label.show() |
726 | 741 | |
727 | 742 | mime_type = self.file_transfer.mime_type |
… |
… |
class OutgoingTransferPalette(BaseTransferPalette): |
729 | 744 | |
730 | 745 | size = self._format_size(self.file_transfer.file_size) |
731 | 746 | label = Gtk.Label(label='%s (%s)' % (size, type_description)) |
732 | | vbox.add(label) |
| 747 | box.append_item(label) |
733 | 748 | label.show() |
734 | 749 | |
735 | 750 | elif new_state in [filetransfer.FT_STATE_ACCEPTED, |
736 | 751 | filetransfer.FT_STATE_OPEN]: |
| 752 | box = PaletteMenuBox() |
| 753 | self.set_content(box) |
| 754 | box.show() |
737 | 755 | |
738 | | for item in self.menu.get_children(): |
739 | | self.menu.remove(item) |
740 | | |
741 | | menu_item = MenuItem(_('Cancel'), icon_name='dialog-cancel') |
| 756 | menu_item = PaletteMenuItem(_('Cancel'), icon_name='dialog-cancel') |
742 | 757 | menu_item.connect('activate', self.__cancel_activate_cb) |
743 | | self.menu.append(menu_item) |
| 758 | box.append_item(menu_item) |
744 | 759 | menu_item.show() |
745 | 760 | |
746 | | vbox = Gtk.VBox() |
747 | | self.set_content(vbox) |
748 | | vbox.show() |
| 761 | separator = PaletteMenuItemSeparator() |
| 762 | box.append_item(separator) |
| 763 | separator.show() |
749 | 764 | |
750 | 765 | self.progress_bar = Gtk.ProgressBar() |
751 | | vbox.add(self.progress_bar) |
| 766 | box.append_item(self.progress_bar) |
752 | 767 | self.progress_bar.show() |
753 | 768 | |
754 | 769 | self.progress_label = Gtk.Label(label='') |
755 | | vbox.add(self.progress_label) |
| 770 | box.append_item(self.progress_label) |
756 | 771 | self.progress_label.show() |
757 | 772 | |
758 | 773 | self.update_progress() |
759 | 774 | |
760 | 775 | elif new_state in [filetransfer.FT_STATE_COMPLETED, |
761 | 776 | filetransfer.FT_STATE_CANCELLED]: |
| 777 | box = PaletteMenuBox() |
| 778 | self.set_content(box) |
| 779 | box.show() |
762 | 780 | |
763 | | for item in self.menu.get_children(): |
764 | | self.menu.remove(item) |
765 | | |
766 | | menu_item = MenuItem(_('Dismiss'), icon_name='dialog-cancel') |
| 781 | menu_item = PaletteMenuItem(_('Dismiss'), icon_name='dialog-cancel') |
767 | 782 | menu_item.connect('activate', self.__dismiss_activate_cb) |
768 | | self.menu.append(menu_item) |
| 783 | box.append_item(menu_item) |
769 | 784 | menu_item.show() |
770 | 785 | |
771 | 786 | self.update_progress() |