HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux ip-172-31-4-197 6.8.0-1036-aws #38~22.04.1-Ubuntu SMP Fri Aug 22 15:44:33 UTC 2025 x86_64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //lib/x86_64-linux-gnu/gedit/plugins/quickopen/virtualdirs.py
# -*- coding: utf-8 -*-

#  Copyright (C) 2009 - Jesse van den Kieboom
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, see <http://www.gnu.org/licenses/>.

from gi.repository import Gio, Gtk


class VirtualDirectory(object):
    def __init__(self, name):
        self._name = name
        self._children = []

    def get_uri(self):
        return 'virtual://' + self._name

    def get_parent(self):
        return None

    def enumerate_children(self, attr, flags, callback):
        return self._children

    def append(self, child):
        if not child.is_native():
            return

        try:
            info = child.query_info("standard::*",
                                    Gio.FileQueryInfoFlags.NONE,
                                    None)

            if info:
                self._children.append((child, info))
        except Exception as e:
            pass


class RecentDocumentsDirectory(VirtualDirectory):
    def __init__(self, maxitems=200):
        VirtualDirectory.__init__(self, 'recent')

        self._maxitems = maxitems
        self.fill()

    def fill(self):
        manager = Gtk.RecentManager.get_default()

        items = manager.get_items()
        items.sort(key=lambda a: a.get_visited(), reverse=True)

        added = 0

        for item in items:
            if item.has_group('gedit'):
                self.append(Gio.file_new_for_uri(item.get_uri()))
                added += 1

                if added >= self._maxitems:
                    break


class CurrentDocumentsDirectory(VirtualDirectory):
    def __init__(self, window):
        VirtualDirectory.__init__(self, 'documents')

        self.fill(window)

    def fill(self, window):
        for doc in window.get_documents():
            location = doc.get_file().get_location()

            if location:
                self.append(location)

# ex:ts=4:et: