def __init__(self):
        self._interfaces = set([
            CLIENT, CLIENT_HANDLER, CLIENT_INTERFACE_REQUESTS,
            PROPERTIES_IFACE, CLIENT_APPROVER
        ])

        bus = dbus.Bus()
        bus_name = dbus.service.BusName(SUGAR_CLIENT_SERVICE, bus=bus)

        dbus.service.Object.__init__(self, bus_name, SUGAR_CLIENT_PATH)

        self._prop_getters = {}
        self._prop_setters = {}
        self._prop_getters.setdefault(CLIENT, {}).update({
            'Interfaces':
            lambda: list(self._interfaces),
        })
        self._prop_getters.setdefault(CLIENT_HANDLER, {}).update({
            'HandlerChannelFilter':
            self.__get_filters_handler_cb,
        })
        self._prop_getters.setdefault(CLIENT_APPROVER, {}).update({
            'ApproverChannelFilter':
            self.__get_filters_approver_cb,
        })

        self.got_channel = dispatch.Signal()
        self.got_dispatch_operation = dispatch.Signal()
Exemple #2
0
    def __init__(self):
        bus = dbus.SessionBus()
        bus_name = dbus.service.BusName(_DBUS_SERVICE, bus=bus)
        dbus.service.Object.__init__(self, bus_name, _DBUS_PATH)

        self._notification_counter = 0
        self.notification_received = dispatch.Signal()
        self.notification_cancelled = dispatch.Signal()
Exemple #3
0
    def __init__(self, query, page_size):
        self._total_count = -1
        self._position = -1
        self._query = query
        self._page_size = page_size

        self._offset = 0
        self._cache = _Cache()

        self.ready = dispatch.Signal()
        self.progress = dispatch.Signal()
Exemple #4
0
    def __init__(self):
        GObject.GObject.__init__(self)

        self._screen = Wnck.Screen.get_default()
        self._screen.connect('window-opened', self._window_opened_cb)
        self._screen.connect('window-closed', self._window_closed_cb)
        self._screen.connect('active-window-changed',
                             self._active_window_changed_cb)

        self.zoom_level_changed = dispatch.Signal()

        self._desktop_level = self.ZOOM_HOME
        self._zoom_level = self.ZOOM_HOME
        self._current_activity = None
        self._activities = []
        self._shared_activities = {}
        self._active_activity = None
        self._tabbing_activity = None
        self._launchers = {}
        self._modal_dialogs_counter = 0

        self._screen.toggle_showing_desktop(True)

        settings = Gio.Settings('org.sugarlabs')
        self._maximum_open_activities = settings.get_int(
            'maximum-number-of-open-activities')
Exemple #5
0
    def __init__(self):
        client = GConf.Client.get_default()
        self._layout = client.get_string(self._FAVORITES_KEY)
        logging.debug('FavoritesSetting layout %r', self._layout)

        self._mode = None

        self.changed = dispatch.Signal()
Exemple #6
0
 def __init__(self):
     self._bus = dbus.SystemBus()
     dbus.service.Object.__init__(self, self._bus, NM_SECRET_AGENT_PATH)
     self.secrets_request = dispatch.Signal()
     proxy = self._bus.get_object(NM_IFACE, NM_AGENT_MANAGER_PATH)
     proxy.Register("org.sugarlabs.sugar",
                    dbus_interface=NM_AGENT_MANAGER_IFACE,
                    reply_handler=self._register_reply_cb,
                    error_handler=self._register_error_cb)
Exemple #7
0
class CaptureSound(object):
    _volume = SugarExt.VolumeAlsa.new(_CAPTURE)

    muted_changed = dispatch.Signal()
    volume_changed = dispatch.Signal()

    def get_muted(self):
        return self._volume.get_mute()

    def get_volume(self):
        return self._volume.get_volume()

    def set_volume(self, new_volume):
        self._volume.set_volume(new_volume)

        self.volume_changed.send(None)

    def set_muted(self, new_state):
        self._volume.set_mute(new_state)
        self.muted_changed.send(None)
Exemple #8
0
class PlaybackSound(object):
    _volume = SugarExt.VolumeAlsa.new(_PLAYBACK)

    muted_changed = dispatch.Signal()
    volume_changed = dispatch.Signal()

    VOLUME_STEP = 10

    def __init__(self):
        self._save_timeout_id = -1

    def get_muted(self):
        return self._volume.get_mute()

    def get_volume(self):
        return self._volume.get_volume()

    def set_volume(self, new_volume):
        self._volume.set_volume(new_volume)
        self.volume_changed.send(None)
        if self._save_timeout_id != -1:
            GObject.source_remove(self._save_timeout_id)
        self._save_timeout_id = GObject.timeout_add(_SAVE_TIMEOUT, self.save)

    def set_muted(self, new_state):
        self._volume.set_mute(new_state)
        self.muted_changed.send(None)
        if self._save_timeout_id != -1:
            GObject.source_remove(self._save_timeout_id)
        self._save_timeout_id = GObject.timeout_add(_SAVE_TIMEOUT, self.save)

    def save(self):
        self._save_timeout_id = -1
        settings = Gio.Settings('org.sugarlabs.sound')
        settings.set_int('volume', self.get_volume())
        return False

    def restore(self):
        settings = Gio.Settings('org.sugarlabs.sound')
        self.set_volume(settings.get_int('volume'))
Exemple #9
0
    def __init__(self, favorite_view):
        self._favorite_view = int(favorite_view)

        settings = Gio.Settings(self._DESKTOP_DIR)
        homeviews = settings.get_value(self._HOMEVIEWS_KEY).unpack()

        self._layout = homeviews[self._favorite_view]['layout']

        logging.debug('FavoritesSetting layout %r', self._layout)

        self._mode = None

        self.changed = dispatch.Signal()
Exemple #10
0
    def __init__(self, favorite_view):
        client = GConf.Client.get_default()
        # Special-case 0 for backward compatibility
        if favorite_view == 0:
            self._client_string = self._FAVORITES_KEY
        else:
            self._client_string = '%s_%d' % (self._FAVORITES_KEY,
                                             favorite_view)

        self._layout = client.get_string(self._client_string)
        if self._layout is None:
            self._layout = favoriteslayout.RingLayout.key
        logging.debug('FavoritesSetting layout %r', self._layout)

        self._mode = None

        self.changed = dispatch.Signal()
Exemple #11
0
FT_STATE_COMPLETED = 4
FT_STATE_CANCELLED = 5

FT_REASON_NONE = 0
FT_REASON_REQUESTED = 1
FT_REASON_LOCAL_STOPPED = 2
FT_REASON_REMOTE_STOPPED = 3
FT_REASON_LOCAL_ERROR = 4
FT_REASON_LOCAL_ERROR = 5
FT_REASON_REMOTE_ERROR = 6

# FIXME: use constants from tp-python once the spec is undrafted
CHANNEL_TYPE_FILE_TRANSFER = \
    'org.freedesktop.Telepathy.Channel.Type.FileTransfer'

new_file_transfer = dispatch.Signal()


class BaseFileTransfer(GObject.GObject):
    def __init__(self, connection):
        GObject.GObject.__init__(self)
        self._connection = connection
        self._state = FT_STATE_NONE
        self._transferred_bytes = 0

        self.channel = None
        self.buddy = None
        self.title = None
        self.file_size = None
        self.description = None
        self.mime_type = None
Exemple #12
0
DS_DBUS_PATH = '/org/laptop/sugar/DataStore'

# Properties the journal cares about.
PROPERTIES = [
    'activity', 'activity_id', 'buddies', 'bundle_id', 'creation_time',
    'filesize', 'icon-color', 'keep', 'mime_type', 'mountpoint', 'mtime',
    'progress', 'timestamp', 'title', 'uid', 'preview'
]

MIN_PAGES_TO_CACHE = 3
MAX_PAGES_TO_CACHE = 5

JOURNAL_METADATA_DIR = '.Sugar-Metadata'

_datastore = None
created = dispatch.Signal()
updated = dispatch.Signal()
deleted = dispatch.Signal()


class _Cache(object):

    __gtype_name__ = 'model_Cache'

    def __init__(self, entries=None):
        self._array = []
        if entries is not None:
            self.append_all(entries)

    def prepend_all(self, entries):
        self._array[0:0] = entries
Exemple #13
0
# 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, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

from gi.repository import GConf

from gi.repository import SugarExt
from sugar3 import dispatch

VOLUME_STEP = 10

muted_changed = dispatch.Signal()
volume_changed = dispatch.Signal()

_volume = SugarExt.VolumeAlsa()


def get_muted():
    return _volume.get_mute()


def get_volume():
    return _volume.get_volume()


def set_volume(new_volume):
    _volume.set_volume(new_volume)