2012-04-04 3 views
0

Ich möchte meine Plugins auf das neue Gedit in Gnome 3 übertragen (kommt von Gnome 2 Gedit), aber sie funktionieren nicht alle.Gibt es eine einfache Möglichkeit, ein gedit Plugin von der gnome2 Version in die gnome3 Version zu konvertieren?

Ich habe ihren Speicherort geändert von ~ /, gnome2/gedit nach ~/.local/share/gedit, und ich habe alle umbenannt von * .gedit-plugin in * .plugin und ich habe die Kopfzeile geändert in diesen Dateien von [Gedit Plugin] zu [Plugin]. Ich kann sie jetzt auf den Plugins-Tabs der Einstellungen sehen, aber das Aktivieren dieser Einstellungen führt zu einem Fehler.

Gibt es irgendwelche einfachen Korrekturen?

Antwort

3

Es ist eigentlich nicht so schwer, wenn Sie Python verwenden. Sie haben die .plugin-Dateien bereits konvertiert. In den Python-Dateien, ist dies ein typisches diff:

-import gtk 
-import gedit 
-import gobject 
-import pango 
+from gi.repository import Gtk, GObject, Gedit 

....... 

-class PluginName(gedit.Plugin): 
+class PluginName(GObject.Object, Gedit.WindowActivatable): 
+ window = GObject.property(type=Gedit.Window) 
+ 
    def __init__(self): 
-  gedit.Plugin.__init__(self) 
+  GObject.Object.__init__(self) 
     self._instances = {} 

- def activate(self, window): 
-  self._instances[window] = PluginNameWindowHelper(self, window) 
+ def do_activate(self): 
+  self._instances[self.window] = PluginNameWindowHelper(self, self.window) 
+ 
+ def do_deactivate(self): 
+  self._instances[self.window].deactivate() 
+  del self._instances[self.window] 

- def deactivate(self, window): 
-  self._instances[window].deactivate() 
-  del self._instances[window] 
+ def do_update_state(self): 
+  self._instances[self.window].update_ui() 

- def update_ui(self, window): 
-  self._instances[window].update_ui() 

....... 

-  self._action_group = gtk.ActionGroup("PluginNameActions") 
+  self._action_group = Gtk.ActionGroup("PluginNameActions") 

....... 

-    line = document.get_text(line_start, line_end) 
+    line = document.get_text(line_start, line_end, False) 

ich vor 6 Plugins einige Zeit umgewandelt, und diese waren die einzigen Änderungen, die ich brauchte.

+0

Schön. Das Plugin, mit dem ich arbeite, scheint ein wenig kompliziert zu sein: http: //pastie.org/3725963 ... und das ist nur eine Datei! – trusktr

+0

Sie müssen meist GObject Inspspection verwenden und die Methoden anpassen, wie es von Jens vorgeschlagen wurde. – gpoo

+0

Danke. Ich werde es versuchen. Jens oder @gpoo, könnt ihr mir bitte eure konvertierten Plugins schicken, um zu sehen, ob es sich bei ihnen um solche handelt, die ich konvertieren wollte? Mein Google Mail: trusktr. Vielen Dank! – trusktr

Verwandte Themen