|
Packit |
6978fb |
# -*- coding: utf-8 -*-
|
|
Packit |
6978fb |
#
|
|
Packit |
6978fb |
# windowactivatable.py - Multi Edit
|
|
Packit |
6978fb |
#
|
|
Packit |
6978fb |
# Copyright (C) 2014 - Jesse van den Kieboom
|
|
Packit |
6978fb |
#
|
|
Packit |
6978fb |
# This program is free software; you can redistribute it and/or modify
|
|
Packit |
6978fb |
# it under the terms of the GNU General Public License as published by
|
|
Packit |
6978fb |
# the Free Software Foundation; either version 2 of the License, or
|
|
Packit |
6978fb |
# (at your option) any later version.
|
|
Packit |
6978fb |
#
|
|
Packit |
6978fb |
# This program is distributed in the hope that it will be useful,
|
|
Packit |
6978fb |
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
6978fb |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
Packit |
6978fb |
# GNU General Public License for more details.
|
|
Packit |
6978fb |
#
|
|
Packit |
6978fb |
# You should have received a copy of the GNU General Public License
|
|
Packit |
6978fb |
# along with this program; if not, write to the Free Software
|
|
Packit |
6978fb |
# Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
Packit |
6978fb |
# Boston, MA 02110-1301, USA.
|
|
Packit |
6978fb |
|
|
Packit |
6978fb |
from gi.repository import GLib, GObject, Gio, Gedit
|
|
Packit |
6978fb |
|
|
Packit |
6978fb |
from .viewactivatable import MultiEditViewActivatable
|
|
Packit |
6978fb |
|
|
Packit |
6978fb |
from gpdefs import *
|
|
Packit |
6978fb |
|
|
Packit |
6978fb |
|
|
Packit |
6978fb |
class MultiEditWindowActivatable(GObject.Object, Gedit.WindowActivatable):
|
|
Packit |
6978fb |
|
|
Packit |
6978fb |
window = GObject.Property(type=Gedit.Window)
|
|
Packit |
6978fb |
|
|
Packit |
6978fb |
def do_activate(self):
|
|
Packit |
6978fb |
action = Gio.SimpleAction.new_stateful("multiedit", None, GLib.Variant.new_boolean(False))
|
|
Packit |
6978fb |
action.connect('activate', self.activate_toggle)
|
|
Packit |
6978fb |
action.connect('change-state', self.multi_edit_mode)
|
|
Packit |
6978fb |
self.window.add_action(action)
|
|
Packit |
6978fb |
|
|
Packit |
6978fb |
self.window.multiedit_window_activatable = self
|
|
Packit |
6978fb |
|
|
Packit |
6978fb |
def do_deactivate(self):
|
|
Packit |
6978fb |
self.window.remove_action("multiedit")
|
|
Packit |
6978fb |
delattr(self.window, 'multiedit_window_activatable')
|
|
Packit |
6978fb |
|
|
Packit |
6978fb |
def do_update_state(self):
|
|
Packit |
6978fb |
view = self.get_view_activatable(self.window.get_active_view())
|
|
Packit |
6978fb |
self.get_action().set_state(GLib.Variant.new_boolean(view != None and view.enabled()))
|
|
Packit |
6978fb |
|
|
Packit |
6978fb |
def get_view_activatable(self, view):
|
|
Packit |
6978fb |
if not hasattr(view, "multiedit_view_activatable"):
|
|
Packit |
6978fb |
return None
|
|
Packit |
6978fb |
return view.multiedit_view_activatable
|
|
Packit |
6978fb |
|
|
Packit |
6978fb |
def get_action(self):
|
|
Packit |
6978fb |
return self.window.lookup_action("multiedit")
|
|
Packit |
6978fb |
|
|
Packit |
6978fb |
def on_multi_edit_toggled(self, viewactivatable):
|
|
Packit |
6978fb |
if viewactivatable.view == self.window.get_active_view():
|
|
Packit |
6978fb |
self.get_action().set_state(GLib.Variant.new_boolean(viewactivatable.enabled()))
|
|
Packit |
6978fb |
|
|
Packit |
6978fb |
def activate_toggle(self, action, parameter):
|
|
Packit |
6978fb |
state = action.get_state()
|
|
Packit |
6978fb |
action.change_state(GLib.Variant.new_boolean(not state.get_boolean()))
|
|
Packit |
6978fb |
|
|
Packit |
6978fb |
def multi_edit_mode(self, action, state):
|
|
Packit |
6978fb |
view = self.window.get_active_view()
|
|
Packit |
6978fb |
helper = self.get_view_activatable(view)
|
|
Packit |
6978fb |
|
|
Packit |
6978fb |
active = state.get_boolean()
|
|
Packit |
6978fb |
|
|
Packit |
6978fb |
if helper != None:
|
|
Packit |
6978fb |
helper.toggle_multi_edit(active)
|
|
Packit |
6978fb |
|
|
Packit |
6978fb |
action.set_state(GLib.Variant.new_boolean(active))
|
|
Packit |
6978fb |
|
|
Packit |
6978fb |
# ex:ts=4:et:
|