Exemple #1
0
    def on_drag_data_received(self, iconview, dragcontext, x, y, selectiondata,
                              info, time):
        assert selectiondata.get_target().name() in URI_TARGET_NAMES
        names = unpack_urilist(selectiondata.get_data())
        files = [LocalFile(uri) for uri in names if uri.startswith('file://')]
        action = dragcontext.get_selected_action()
        logger.debug('Drag received %s, %s', action, files)

        if action == Gdk.DragAction.MOVE:
            self._move_files(files)
        elif action == Gdk.DragAction.ASK:
            menu = Gtk.Menu()

            item = Gtk.MenuItem.new_with_mnemonic(
                _('_Move Here'))  # T: popup menu action on drag-drop of a file
            item.connect('activate', lambda o: self._move_files(files))
            menu.append(item)

            item = Gtk.MenuItem.new_with_mnemonic(
                _('_Copy Here'))  # T: popup menu action on drag-drop of a file
            item.connect('activate', lambda o: self._copy_files(files))
            menu.append(item)

            menu.append(Gtk.SeparatorMenuItem())
            item = Gtk.MenuItem.new_with_mnemonic(
                _('Cancel'))  # T: popup menu action on drag-drop of a file
            # cancel action needs no action
            menu.append(item)

            menu.show_all()
            gtk_popup_at_pointer(menu)
        else:
            # Assume Gdk.DragAction.COPY or Gdk.DragAction.DEFAULT
            # on windows we get "0" which is not mapped to any action
            self._copy_files(files)
Exemple #2
0
    def on_button_press_event(self, treeview, event):
        '''
		Displays a context-menu on right button click
		Opens the link of a tablecell on CTRL pressed and left button click
		'''
        if event.type == Gdk.EventType.BUTTON_PRESS and event.button == 1 and event.get_state(
        ) & Gdk.ModifierType.CONTROL_MASK:
            # With CTRL + LEFT-Mouse-Click link of cell is opened
            cellvalue = self.fetch_cell_by_event(event, treeview)
            linkvalue = self.get_linkurl(cellvalue)
            if linkvalue:
                self.emit('link-clicked', {'href': str(linkvalue)})
            return

        if event.type == Gdk.EventType.BUTTON_PRESS and event.button == 3:
            # Right button opens context menu
            self._keep_toolbar_open = True
            cellvalue = self.fetch_cell_by_event(event, treeview)
            linkvalue = self.get_linkurl(cellvalue)
            linkitem_is_activated = (linkvalue is not None)

            menu = Gtk.Menu()

            for stock, handler, data, tooltip in (
                (Gtk.STOCK_ADD, self.on_add_row, None,
                 _('Add row')),  # T: menu item
                (Gtk.STOCK_DELETE, self.on_delete_row, None,
                 _('Delete row')),  # T: menu item
                (Gtk.STOCK_COPY, self.on_clone_row, None,
                 _('Clone row')),  # T: menu item
                (None, None, None, None),  # T: menu item
                (Gtk.STOCK_JUMP_TO, self.on_open_link, linkvalue,
                 _('Open cell content link')),  # T: menu item
                (None, None, None, None),
                (Gtk.STOCK_GO_UP, self.on_move_row, -1,
                 _('Row up')),  # T: menu item
                (Gtk.STOCK_GO_DOWN, self.on_move_row, 1,
                 _('Row down')),  # T: menu item
                (None, None, None, None),
                (Gtk.STOCK_PREFERENCES, self.on_change_columns, None,
                 _('Change columns'))  # T: menu item
            ):

                if stock is None:
                    menu.append(Gtk.SeparatorMenuItem())
                else:
                    item = Gtk.ImageMenuItem(stock)
                    item.set_always_show_image(True)
                    item.set_label(_(tooltip))
                    if data:
                        item.connect_after('activate', handler, data)
                    else:
                        item.connect_after('activate', handler)
                    if handler == self.on_open_link:
                        item.set_sensitive(linkitem_is_activated)
                    menu.append(item)

            menu.show_all()
            gtk_popup_at_pointer(menu, event)
Exemple #3
0
 def on_button_popup_menu(self, button):
     menu = Gtk.Menu()
     uiactions = UIActions(
         self,
         self.notebook,
         button.zim_path,
         self.navigation,
     )
     uiactions.populate_menu_with_actions(PAGE_ACTIONS, menu)
     gtk_popup_at_pointer(menu)
     return True
Exemple #4
0
 def do_plus_button_popup_menu(self, button, event):
     '''Handler for button-release-event, triggers popup menu for plus button.'''
     if event.button == 3:
         menu = Gtk.Menu()
         item = Gtk.CheckMenuItem(
             _('Show full Page Name'))  # T: menu item for context menu
         item.set_active(self.uistate['show_full_page_name'])
         item.connect('activate',
                      lambda o: self.toggle_show_full_page_name())
         menu.append(item)
         menu.show_all()
         gtk_popup_at_pointer(menu)
         return True
Exemple #5
0
 def on_button_press_event(self, iconview, event):
     # print('on_button_press_event')
     if event.button == 3:
         popup_menu = Gtk.Menu()
         x = int(event.x)
         y = int(event.y)
         time = event.time
         pathinfo = iconview.get_path_at_pos(x, y)
         if pathinfo is not None:
             iconview.grab_focus()
             gtk_popup_at_pointer(popup_menu, event)
             self.do_populate_popup(popup_menu, pathinfo)
             # FIXME should use a signal here
             return True
     return False
Exemple #6
0
    def do_bookmarks_popup_menu(self, button, event):
        '''Handler for button-release-event, triggers popup menu for bookmarks.'''
        if event.button != 3:
            return False

        path = button.zim_path

        _button_width = button.size_request().width
        direction = 'left' if (int(event.x) <= _button_width / 2) else 'right'

        def set_save_bookmark(path):
            self._saved_bookmark = path

        if button.get_label() in (path, self._get_short_page_name(path)):
            rename_button_text = _('Set New Name')  # T: button label
        else:
            rename_button_text = _('Back to Original Name')  # T: button label

        # main popup menu
        main_menu = Gtk.Menu()
        main_menu_items = (
            (_('Remove'), lambda o: self.delete(path)),  # T: menu item
            (_('Remove All'), lambda o: self.delete_all(True)),  # T: menu item
            ('separator', ''),
            (_('Copy'), lambda o: set_save_bookmark(path)),  # T: menu item
            (_('Paste'), lambda o: self.move_bookmark(
                self._saved_bookmark, path, direction)),  # T: menu item
            ('separator', ''),
            (_('Open in New Window'),
             lambda o: self.navigation.open_page(Path(path), new_window=True)
             ),  # T: menu item
            ('separator', ''),
            (rename_button_text, lambda o: self.rename_bookmark(button)),
            (_('Set to Current Page'), lambda o: self.change_bookmark(path))
        )  # T: menu item

        for name, func in main_menu_items:
            if name == 'separator':
                item = Gtk.SeparatorMenuItem()
            else:
                item = Gtk.MenuItem.new_with_mnemonic(name)
                item.connect('activate', func)
            main_menu.append(item)

        main_menu.show_all()
        gtk_popup_at_pointer(main_menu)
        return True
Exemple #7
0
    def delete_all(self, ask_confirmation=False):
        '''
		Remove all bookmarks.
		:param ask_confirmation: to confirm deleting.
		'''
        def _delete_all():
            self.paths = []
            self.paths_names = {}
            self._reload_bar()

        if ask_confirmation:
            # Prevent accidental deleting of all bookmarks.
            menu = Gtk.Menu()
            item = Gtk.MenuItem.new_with_mnemonic(
                _('Do you want to delete all bookmarks?')
            )  # T: message for bookmark plugin
            item.connect('activate', lambda o: _delete_all())
            menu.append(item)
            menu.show_all()
            gtk_popup_at_pointer(menu)
        else:
            _delete_all()
Exemple #8
0
 def on_button_popup_menu(self, button):
     menu = self.get_button_popup(button)
     gtk_popup_at_pointer(menu)
     return True
 def do_toolbar_popup(self, toolbar, x, y, button):
     '''Show the context menu for the toolbar'''
     menu = self.uimanager.get_widget('/toolbar_popup')
     gtk_popup_at_pointer(menu)