Example #1
0
    def __init__(self, config, window, on_streams_button_press, on_add_item, settings_save, TAB_STREAMS, add_tab):
        self.config = config
        self.window = window
        self.on_streams_button_press = on_streams_button_press
        self.on_add_item = on_add_item
        self.settings_save = settings_save

        self.stream_edit_dialog = None

        self.builder = ui.builder('streams')

        # Streams tab
        self.streams = self.builder.get_object('streams_page_treeview')
        self.streams_selection = self.streams.get_selection()
        self.streamswindow = self.builder.get_object('streams_page_scrolledwindow')

        self.tab_widget = self.builder.get_object('streams_tab_eventbox')
        self.tab_label = self.builder.get_object('streams_tab_label')
        self.tab_label.set_text(TAB_STREAMS)

        self.tab = add_tab(self.streamswindow, self.tab_widget, TAB_STREAMS,
                           self.streams)

        self.streams.connect('button_press_event', self.on_streams_button_press)
        self.streams.connect('row_activated', self.on_streams_activated)
        self.streams.connect('key-press-event', self.on_streams_key_press)

        # Initialize streams data and widget
        self.streamsdata = self.builder.get_object('streams_liststore')
        self.streams.set_search_column(1)
Example #2
0
    def on_prefs_real(self):
        """Display the preferences dialog"""

        self.builder = ui.builder('preferences')
        self.provider = ui.css_provider('preferences')
        self.prefswindow = self.builder.get_object('preferences_dialog')
        self.prefswindow.set_transient_for(self.window)
        self.prefsnotebook = self.builder.get_object('preferences_notebook')

        tabs = ('mpd', 'display', 'behavior', 'format', 'extras', 'plugins')

        for name in tabs:
            func = getattr(self, '%s_tab' % name)
            cbs = globals().get('%s_cbs' % name.capitalize())
            func(cbs)

        close_button = self.builder.get_object('preferences_closebutton')
        self.prefswindow.show_all()
        self.prefsnotebook.set_current_page(self.last_tab)
        close_button.grab_focus()
        self.prefswindow.connect('response', self._window_response)
        # Save previous connection properties to determine if we should try to
        # connect to MPD after prefs are closed:
        self.prev_host = self.config.host[self.config.profile_num]
        self.prev_port = self.config.port[self.config.profile_num]
        self.prev_password = self.config.password[self.config.profile_num]
Example #3
0
    def __init__(self, config, window, on_streams_button_press, on_add_item,
                 settings_save, TAB_STREAMS, add_tab):
        self.config = config
        self.window = window
        self.on_streams_button_press = on_streams_button_press
        self.on_add_item = on_add_item
        self.settings_save = settings_save

        self.stream_edit_dialog = None

        self.builder = ui.builder('streams')

        # Streams tab
        self.streams = self.builder.get_object('streams_page_treeview')
        self.streams_selection = self.streams.get_selection()
        self.streamswindow = self.builder.get_object(
            'streams_page_scrolledwindow')

        self.tab_widget = self.builder.get_object('streams_tab_eventbox')
        self.tab_label = self.builder.get_object('streams_tab_label')
        self.tab_label.set_text(TAB_STREAMS)

        self.tab = add_tab(self.streamswindow, self.tab_widget, TAB_STREAMS,
                           self.streams)

        self.streams.connect('button_press_event',
                             self.on_streams_button_press)
        self.streams.connect('row_activated', self.on_streams_activated)
        self.streams.connect('key-press-event', self.on_streams_key_press)

        # Initialize streams data and widget
        self.streamsdata = self.builder.get_object('streams_liststore')
        self.streams.set_search_column(1)
Example #4
0
    def on_prefs_real(self):
        """Display the preferences dialog"""

        self.builder = ui.builder('preferences')
        self.provider = ui.css_provider('preferences')
        self.prefswindow = self.builder.get_object('preferences_dialog')
        self.prefswindow.set_transient_for(self.window)
        self.prefsnotebook = self.builder.get_object('preferences_notebook')

        tabs = ('mpd', 'display', 'behavior', 'format', 'extras', 'plugins')

        for name in tabs:
            func = getattr(self, '%s_tab' % name)
            cbs = globals().get('%s_cbs' % name.capitalize())
            func(cbs)

        close_button = self.builder.get_object('preferences_closebutton')
        self.prefswindow.show_all()
        self.prefsnotebook.set_current_page(self.last_tab)
        close_button.grab_focus()
        self.prefswindow.connect('response', self._window_response)
        # Save previous connection properties to determine if we should try to
        # connect to MPD after prefs are closed:
        self.prev_host = self.config.host[self.config.profile_num]
        self.prev_port = self.config.port[self.config.profile_num]
        self.prev_password = self.config.password[self.config.profile_num]
Example #5
0
    def __init__(self, config, linkcolor, on_link_click_cb,
                 get_playing_song, TAB_INFO, on_image_activate,
                 on_image_motion_cb, on_image_drop_cb,
                 album_return_artist_and_tracks, add_tab):
        self.logger = logging.getLogger(__name__)
        self.config = config
        self.linkcolor = linkcolor
        self.on_link_click_cb = on_link_click_cb
        self.get_playing_song = get_playing_song
        self.album_return_artist_and_tracks = album_return_artist_and_tracks

        self.last_bitrate = None

        self.info_boxes_in_more = None
        self._editlabel = None
        self.info_left_label = None
        self.info_lyrics = None
        self._morelabel = None
        self._searchlabel = None

        self.lyrics_text = None
        self.album_text = None

        self.active = False

        # Info tab
        self.builder = ui.builder('info')
        self.css_provider = ui.css_provider('info')
        self.info_area = self.builder.get_object('info_page_scrolledwindow')
        self.tab_label_widget = self.builder.get_object('info_tab_eventbox')
        tab_label = self.builder.get_object('info_tab_label')
        tab_label.set_text(TAB_INFO)
        self.tab = add_tab(self.info_area, self.tab_label_widget,
                           TAB_INFO, self.info_area)

        self._imagebox = self.builder.get_object('info_page_song_eventbox')
        self.image = self.builder.get_object('info_page_song_image')
        self.image.set_from_icon_set(ui.icon('sonata-cd-large'), -1)

        self._imagebox.drag_dest_set(Gtk.DestDefaults.HIGHLIGHT |
                                     Gtk.DestDefaults.DROP,
                                     [Gtk.TargetEntry.new("text/uri-list", 0, 80),
                                      Gtk.TargetEntry.new("text/plain", 0, 80)],
                                      Gdk.DragAction.DEFAULT)
        self._imagebox.connect('button_press_event', on_image_activate)
        self._imagebox.connect('drag_motion', on_image_motion_cb)
        self._imagebox.connect('drag_data_received', on_image_drop_cb)

        self._widgets_initialize()
Example #6
0
    def __init__(self, config, linkcolor, on_link_click_cb, get_playing_song,
                 TAB_INFO, on_image_activate, on_image_motion_cb,
                 on_image_drop_cb, album_return_artist_and_tracks, add_tab):
        self.logger = logging.getLogger(__name__)
        self.config = config
        self.linkcolor = linkcolor
        self.on_link_click_cb = on_link_click_cb
        self.get_playing_song = get_playing_song
        self.album_return_artist_and_tracks = album_return_artist_and_tracks

        self.last_bitrate = None

        self.info_boxes_in_more = None
        self._editlabel = None
        self.info_left_label = None
        self.info_lyrics = None
        self._morelabel = None
        self._searchlabel = None

        self.lyrics_text = None
        self.album_text = None

        self.active = False

        # Info tab
        self.builder = ui.builder('info')
        self.css_provider = ui.css_provider('info')
        self.info_area = self.builder.get_object('info_page_scrolledwindow')
        self.tab_label_widget = self.builder.get_object('info_tab_eventbox')
        tab_label = self.builder.get_object('info_tab_label')
        tab_label.set_text(TAB_INFO)
        self.tab = add_tab(self.info_area, self.tab_label_widget, TAB_INFO,
                           self.info_area)

        self._imagebox = self.builder.get_object('info_page_song_eventbox')
        self.image = self.builder.get_object('info_page_song_image')
        self.image.set_from_icon_set(ui.icon('sonata-cd-large'), -1)

        self._imagebox.drag_dest_set(
            Gtk.DestDefaults.HIGHLIGHT | Gtk.DestDefaults.DROP, [
                Gtk.TargetEntry.new("text/uri-list", 0, 80),
                Gtk.TargetEntry.new("text/plain", 0, 80)
            ], Gdk.DragAction.DEFAULT)
        self._imagebox.connect('button_press_event', on_image_activate)
        self._imagebox.connect('drag_motion', on_image_motion_cb)
        self._imagebox.connect('drag_data_received', on_image_drop_cb)

        self._widgets_initialize()
Example #7
0
    def __init__(self, window, tags_mpd_update, tags_set_use_mpdpath):
        self.window = window
        self.tags_mpd_update = tags_mpd_update
        self.tags_set_use_mpdpath = tags_set_use_mpdpath

        self.file_label = None
        self.curr_mpdpath = None
        self.tagnum = None
        self.use_mpdpaths = None

        self.edit_window = None
        self.entries = None
        self.tags = None

        self.builder = ui.builder('tagedit')
        self.css_provider = ui.css_provider('tagedit')
Example #8
0
    def __init__(self, window, tags_mpd_update, tags_set_use_mpdpath):
        self.window = window
        self.tags_mpd_update = tags_mpd_update
        self.tags_set_use_mpdpath = tags_set_use_mpdpath

        self.file_label = None
        self.curr_mpdpath = None
        self.tagnum = None
        self.use_mpdpaths = None

        self.edit_window = None
        self.entries = None
        self.tags = None

        self.builder = ui.builder('tagedit')
        self.css_provider = ui.css_provider('tagedit')
Example #9
0
def tab_construct():
    builder = ui.builder('localmpd', 'plugins')
    editbutton = builder.get_object('localmpd_edit_button')
    editbutton.connect('clicked', lambda *args: subprocess.Popen(
        ["gksu", "xdg-open", "/etc/mpd.conf"]))
    restartbutton = builder.get_object('localmpd_restart_button')
    restartbutton.connect('clicked', lambda *args:subprocess.Popen(
            ["gksu", "service", "mpd", "restart"]))

    label = builder.get_object('localmpd_data_label')
    update(label)

    window = builder.get_object('localmpd_scrolledwindow')
    window.show_all()
    tab_widget = builder.get_object('localmpd_tab_eventbox')

    # (tab content, icon name, tab name, the widget to focus on tab switch)
    return (window, tab_widget, "Local MPD", None)
Example #10
0
    def __init__(self, config, window, mpd, UIManager,
                 update_menu_visibility, iterate_now, on_add_item,
                 on_playlists_button_press, get_current_songs, connected,
                 add_selected_to_playlist, TAB_PLAYLISTS, add_tab):
        self.config = config
        self.window = window
        self.mpd = mpd
        self.UIManager = UIManager
        self.update_menu_visibility = update_menu_visibility
        self.iterate_now = iterate_now # XXX Do we really need this?
        self.on_add_item = on_add_item
        self.on_playlists_button_press = on_playlists_button_press
        self.get_current_songs = get_current_songs
        self.add_selected_to_playlist = add_selected_to_playlist
        self.connected = connected

        self.mergepl_id = None
        self.actionGroupPlaylists = None
        self.playlist_name_dialog = None

        self.builder = ui.builder('playlists')

        # Playlists tab
        self.playlists = self.builder.get_object('playlists_page_treeview')
        self.playlists_selection = self.playlists.get_selection()
        self.playlistswindow = self.builder.get_object('playlists_page_scrolledwindow')

        self.tab_label = self.builder.get_object('playlists_tab_label')
        self.tab_label.set_text(TAB_PLAYLISTS)

        self.tab_widget = self.builder.get_object('playlists_tab_eventbox')
        self.tab = add_tab(self.playlistswindow, self.tab_widget, TAB_PLAYLISTS,
                           self.playlists)

        self.playlists.connect('button_press_event',
                               self.on_playlists_button_press)
        self.playlists.connect('row_activated', self.playlists_activated)
        self.playlists.connect('key-press-event', self.playlists_key_press)

        # Initialize playlist data and widget
        self.playlistsdata = self.builder.get_object('playlists_liststore')
        self.playlists.set_search_column(1)
Example #11
0
def tab_construct():
    builder = ui.builder('youtube', 'plugins')
    phrase = builder.get_object('phrase')
    search = builder.get_object('search')

    lambda_search = lambda *args: search_phrase_in_separate_thread(
        builder,
        [builder, phrase.get_text()])
    
    phrase.connect('activate', lambda_search)
    search.connect('clicked', lambda_search)
    
    builder.get_object('results_view').connect(
        'row_activated', lambda *args: trigger_row(builder))

    window = builder.get_object('youtube_scrolledwindow')
    window.show_all()
    tab_widget = builder.get_object('youtube_tab_eventbox')

    return (window, tab_widget, "YouTube", None)
Example #12
0
    def __init__(self, config, window, mpd, UIManager, update_menu_visibility,
                 iterate_now, on_add_item, on_playlists_button_press,
                 connected, add_selected_to_playlist, TAB_PLAYLISTS, add_tab):
        self.config = config
        self.window = window
        self.mpd = mpd
        self.UIManager = UIManager
        self.update_menu_visibility = update_menu_visibility
        self.iterate_now = iterate_now  # XXX Do we really need this?
        self.on_add_item = on_add_item
        self.on_playlists_button_press = on_playlists_button_press
        self.add_selected_to_playlist = add_selected_to_playlist
        self.connected = connected

        self.mergepl_id = None
        self.actionGroupPlaylists = None
        self.playlist_name_dialog = None

        self.builder = ui.builder('playlists')

        # Playlists tab
        self.playlists = self.builder.get_object('playlists_page_treeview')
        self.playlists_selection = self.playlists.get_selection()
        self.playlistswindow = self.builder.get_object(
            'playlists_page_scrolledwindow')

        self.tab_label = self.builder.get_object('playlists_tab_label')
        self.tab_label.set_text(TAB_PLAYLISTS)

        self.tab_widget = self.builder.get_object('playlists_tab_eventbox')
        self.tab = add_tab(self.playlistswindow, self.tab_widget,
                           TAB_PLAYLISTS, self.playlists)

        self.playlists.connect('button_press_event',
                               self.on_playlists_button_press)
        self.playlists.connect('row_activated', self.playlists_activated)
        self.playlists.connect('key-press-event', self.playlists_key_press)

        # Initialize playlist data and widget
        self.playlistsdata = self.builder.get_object('playlists_liststore')
        self.playlists.set_search_column(1)
Example #13
0
 def about_load(self, stats):
     self.builder = ui.builder('about')
     self.provider = ui.css_provider('about')
     self.about_dialog = self.builder.get_object('about_dialog')
     try:
         self.about_dialog.set_transient_for(self.parent_window)
     except:
         pass
     self.about_dialog.set_version(self.version)
     if stats:
         self.about_dialog.set_copyright(self.statstext(stats))
     context = self.about_dialog.get_style_context()
     logo_icon = Gtk.IconFactory.lookup_default('sonata-large')
     logo_pb = logo_icon.render_icon_pixbuf(context, -1)
     self.about_dialog.set_logo(logo_pb)
     # Add button to show keybindings:
     children = self.about_dialog.action_area.get_children()[-1]
     self.about_dialog.action_area.reorder_child(children, -2)
     # Connect to callbacks
     self.about_dialog.connect('response', self.about_close)
     self.about_dialog.connect('delete_event', self.about_close)
     shortcut_button = self.builder.get_object('shortcut_button')
     shortcut_button.connect('clicked', self.about_shortcuts)
     self.about_dialog.show_all()
Example #14
0
 def about_load(self, stats):
     self.builder = ui.builder('about')
     self.provider = ui.css_provider('about')
     self.about_dialog = self.builder.get_object('about_dialog')
     try:
         self.about_dialog.set_transient_for(self.parent_window)
     except:
         pass
     self.about_dialog.set_version(self.version)
     if stats:
         self.about_dialog.set_copyright(self.statstext(stats))
     context = self.about_dialog.get_style_context()
     logo_icon = Gtk.IconFactory.lookup_default('sonata-large')
     logo_pb = logo_icon.render_icon_pixbuf(context, -1)
     self.about_dialog.set_logo(logo_pb)
     # Add button to show keybindings:
     children = self.about_dialog.action_area.get_children()[-1]
     self.about_dialog.action_area.reorder_child(children, -2)
     # Connect to callbacks
     self.about_dialog.connect('response', self.about_close)
     self.about_dialog.connect('delete_event', self.about_close)
     shortcut_button = self.builder.get_object('shortcut_button')
     shortcut_button.connect('clicked', self.about_shortcuts)
     self.about_dialog.show_all()
Example #15
0
    def __init__(self, config, mpd, TAB_CURRENT, on_current_button_press,
                 connected, sonata_loaded, songinfo, update_statusbar,
                 iterate_now, libsearchfilter_get_style, add_tab):
        self.config = config
        self.mpd = mpd
        self.on_current_button_press = on_current_button_press
        self.connected = connected
        self.sonata_loaded = sonata_loaded
        self.songinfo = songinfo
        self.update_statusbar = update_statusbar
        self.iterate_now = iterate_now
        self.libsearchfilter_get_style = libsearchfilter_get_style

        self.currentdata = None
        self.filterbox_visible = False
        self.current_update_skip = False
        # Mapping between filter rows and self.currentdata rows
        self.filter_row_mapping = []
        self.columnformat = None
        self.columns = None

        self.current_songs = None
        self.filterbox_cmd_buf = None
        self.filterbox_cond = None
        self.filterbox_source = None
        # TreeViewColumn, order
        self.column_sorted = (None, Gtk.SortType.DESCENDING)
        self.total_time = 0
        self.edit_style_orig = None
        self.resizing_columns = None
        self.prev_boldrow = -1
        self.prevtodo = None
        self.plpos = None
        self.playlist_pos_before_filter = None
        self.sel_rows = None

        # Current tab
        self.builder = ui.builder('current')
        self.current = self.builder.get_object('current_page_treeview')
        self.current_selection = self.current.get_selection()
        self.expanderwindow = self.builder.get_object('current_page_scrolledwindow')
        self.filterpattern = self.builder.get_object('current_page_filterbox_entry')
        self.filterbox = self.builder.get_object('current_page_filterbox')
        self.vbox_current = self.builder.get_object('current_page_v_box')
        tab_label = self.builder.get_object('current_tab_label')
        tab_label.set_text(TAB_CURRENT)

        self.tab_label_widget = self.builder.get_object('current_tab_eventbox')
        self.tab = add_tab(self.vbox_current, self.tab_label_widget,
                           TAB_CURRENT, self.current)

        self.current.connect('drag_data_received', self.on_dnd)
        self.current.connect('row_activated', self.on_current_click)
        self.current.connect('button_press_event',
                             self.on_current_button_press)
        self.current.connect('drag-begin', self.on_current_drag_begin)
        self.current.connect_after('drag-begin',
                                   self.dnd_after_current_drag_begin)
        self.current.connect('button_release_event',
                             self.on_current_button_release)

        self.filter_changed_handler = self.filterpattern.connect('changed',
                                                self.searchfilter_feed_loop)
        self.filterpattern.connect('activate', self.searchfilter_on_enter)
        self.filterpattern.connect('key-press-event',
                                   self.searchfilter_key_pressed)
        filterclosebutton = self.builder.get_object(
            'current_page_filterbox_closebutton')
        filterclosebutton.connect('clicked', self.searchfilter_toggle)

        # Set up current view
        self.initialize_columns()
        self.current_selection.set_mode(Gtk.SelectionMode.MULTIPLE)
        target_reorder = ('MY_TREE_MODEL_ROW', Gtk.TargetFlags.SAME_WIDGET, 0)
        target_file_managers = ('text/uri-list', 0, 0)
        self.current.enable_model_drag_source(Gdk.ModifierType.BUTTON1_MASK,
                                              [target_reorder,
                                               target_file_managers],
                                              Gdk.DragAction.COPY |
                                              Gdk.DragAction.DEFAULT)
        self.current.enable_model_drag_dest([target_reorder,
                                             target_file_managers],
                                            Gdk.DragAction.MOVE |
                                            Gdk.DragAction.DEFAULT)
        self.current.connect('drag-data-get',
                             self.dnd_get_data_for_file_managers)
Example #16
0
    def __init__(self, config, mpd, name, on_button_press,
                 connected, sonata_loaded, songinfo, update_statusbar,
                 iterate_now, add_tab):
        self.config = config
        self.mpd = mpd
        self.on_button_press = on_button_press
        self.connected = connected
        self.sonata_loaded = sonata_loaded
        self.songinfo = songinfo
        self.update_statusbar = update_statusbar
        self.iterate_now = iterate_now

        self.store = None
        self.filterbox_visible = False
        self.update_skip = False
        self.columnformat = None
        self.columns = None

        self.refilter_handler_id = None
        # TreeViewColumn, order
        self.column_sorted = (None, Gtk.SortType.DESCENDING)
        self.total_time = 0
        self.resizing_columns = None
        self.prev_boldrow = -1
        self.playlist_pos_before_filter = None
        self.sel_rows = None

        # Current tab
        builder = ui.builder('current')
        self.view = builder.get_object('current_page_treeview')
        self.selection = self.view.get_selection()
        self.filterpattern = builder.get_object('current_page_filterbox_entry')
        self.filterbox = builder.get_object('current_page_filterbox')
        self.vbox = builder.get_object('current_page_v_box')
        builder.get_object('current_tab_label').set_text(name)

        tab_label_widget = builder.get_object('current_tab_eventbox')
        self.tab = add_tab(self.vbox, tab_label_widget, name, self.view)

        self.view.connect('drag-data-received', self.on_dnd_received)
        self.view.connect('row-activated', self.on_click)
        self.view.connect('button-press-event', self.on_button_press)
        self.view.connect('drag-begin', self.on_drag_begin)
        self.view.connect_after('drag-begin', self.on_dnd_after_drag_begin)
        self.view.connect('button-release-event', self.on_button_release)

        self.filter_changed_handler = self.filterpattern.connect(
            'changed', self.searchfilter_key_pressed)
        self.filterpattern.connect('activate', self.searchfilter_on_enter)
        filterclosebutton = builder.get_object(
            'current_page_filterbox_closebutton')
        filterclosebutton.connect('clicked', self.searchfilter_toggle)

        # Set up current view
        self.initialize_columns()
        self.selection.set_mode(Gtk.SelectionMode.MULTIPLE)

        target_reorder = ('MY_TREE_MODEL_ROW', Gtk.TargetFlags.SAME_WIDGET, 0)
        target_file_managers = ('text/uri-list', 0, 0)

        self.view.enable_model_drag_source(
            Gdk.ModifierType.BUTTON1_MASK,
            [target_reorder, target_file_managers],
            Gdk.DragAction.COPY | Gdk.DragAction.DEFAULT)
        self.view.enable_model_drag_dest(
            [target_reorder, target_file_managers],
            Gdk.DragAction.MOVE | Gdk.DragAction.DEFAULT)

        self.view.connect('drag-data-get', self.dnd_get_data_for_file_managers)
Example #17
0
    def __init__(self, config, mpd, name, on_button_press, connected,
                 sonata_loaded, songinfo, update_statusbar, iterate_now,
                 add_tab):
        self.config = config
        self.mpd = mpd
        self.on_button_press = on_button_press
        self.connected = connected
        self.sonata_loaded = sonata_loaded
        self.songinfo = songinfo
        self.update_statusbar = update_statusbar
        self.iterate_now = iterate_now

        self.store = None
        self.filterbox_visible = False
        self.update_skip = False
        self.columnformat = None
        self.columns = None

        self.refilter_handler_id = None
        # TreeViewColumn, order
        self.column_sorted = (None, Gtk.SortType.DESCENDING)
        self.total_time = 0
        self.resizing_columns = None
        self.prev_boldrow = -1
        self.playlist_pos_before_filter = None
        self.sel_rows = None

        # Current tab
        builder = ui.builder('current')
        self.view = builder.get_object('current_page_treeview')
        self.selection = self.view.get_selection()
        self.filterpattern = builder.get_object('current_page_filterbox_entry')
        self.filterbox = builder.get_object('current_page_filterbox')
        self.vbox = builder.get_object('current_page_v_box')
        builder.get_object('current_tab_label').set_text(name)

        tab_label_widget = builder.get_object('current_tab_eventbox')
        self.tab = add_tab(self.vbox, tab_label_widget, name, self.view)

        self.view.connect('drag-data-received', self.on_dnd_received)
        self.view.connect('row-activated', self.on_click)
        self.view.connect('button-press-event', self.on_button_press)
        self.view.connect('drag-begin', self.on_drag_begin)
        self.view.connect_after('drag-begin', self.on_dnd_after_drag_begin)
        self.view.connect('button-release-event', self.on_button_release)

        self.filter_changed_handler = self.filterpattern.connect(
            'changed', self.searchfilter_key_pressed)
        self.filterpattern.connect('activate', self.searchfilter_on_enter)
        filterclosebutton = builder.get_object(
            'current_page_filterbox_closebutton')
        filterclosebutton.connect('clicked', self.searchfilter_toggle)

        # Set up current view
        self.initialize_columns()
        self.selection.set_mode(Gtk.SelectionMode.MULTIPLE)

        target_reorder = ('MY_TREE_MODEL_ROW', Gtk.TargetFlags.SAME_WIDGET, 0)
        target_file_managers = ('text/uri-list', 0, 0)

        self.view.enable_model_drag_source(
            Gdk.ModifierType.BUTTON1_MASK,
            [target_reorder, target_file_managers],
            Gdk.DragAction.COPY | Gdk.DragAction.DEFAULT)
        self.view.enable_model_drag_dest(
            [target_reorder, target_file_managers],
            Gdk.DragAction.MOVE | Gdk.DragAction.DEFAULT)

        self.view.connect('drag-data-get', self.dnd_get_data_for_file_managers)