summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--commit.glade148
-rw-r--r--g-ed-it.py185
2 files changed, 255 insertions, 78 deletions
diff --git a/commit.glade b/commit.glade
new file mode 100644
index 0000000..8342062
--- /dev/null
+++ b/commit.glade
@@ -0,0 +1,148 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+<requires lib="gnome"/>
+
+<widget class="GtkDialog" id="commit_dialog">
+ <property name="width_request">667</property>
+ <property name="visible">False</property>
+ <property name="title" translatable="yes">Commit Message</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+ <property name="modal">False</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">True</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus_on_map">True</property>
+ <property name="urgency_hint">False</property>
+ <property name="has_separator">False</property>
+
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="dialog-vbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">4</property>
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+ <child>
+ <widget class="GtkButton" id="cancel_button">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-close</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-7</property>
+ <accelerator key="Escape" modifiers="0" signal="clicked"/>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="commit_button">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-ok</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-10</property>
+ <accelerator key="Return" modifiers="0" signal="clicked"/>
+ </widget>
+ </child>
+
+ </widget>
+ <packing>
+ <property name="padding">4</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox1">
+ <property name="border_width">10</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">18</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <widget class="GtkLabel" id="labelsearchfor">
+ <property name="width_request">80</property>
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Commit message</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width_chars">-1</property>
+ <property name="single_line_mode">False</property>
+ <property name="angle">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="commit_text">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <!-- perhaps use GTK Label for explaining this uses Python re-->
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/g-ed-it.py b/g-ed-it.py
index 1ae351b..b0943aa 100644
--- a/g-ed-it.py
+++ b/g-ed-it.py
@@ -1,5 +1,7 @@
import gedit
+
import gtk
+import gtk.glade
import gobject
@@ -18,84 +20,111 @@ ui_string = """<ui>
</ui>
"""
+GLADE_FILE = os.path.join(os.path.dirname(__file__), "commit.glade")
+
class PluginHelper:
- def __init__(self, plugin, window):
- self.window = window
- self.plugin = plugin
-
- self.ui_id = None
-
- # Add a "toggle split view" item to the View menu
- self.insert_menu_item(window)
-
- # We're going to keep track of each tab's split view
- # and, if used, ALT view -- the view of a separate
- # document -- with a couple of dictionaries. We'll
- # index each dictionary via the tab objects.
- self.split_views = {}
- self.alt_views = {}
-
- # This keeps track of whether the user is viewing an ALT document.
- self.same_document = {}
-
- # I hardly even know how this works, but it gets our encoding.
- try: self.encoding = gedit.encoding_get_current()
- except: self.encoding = gedit.gedit_encoding_get_current()
-
- def deactivate(self):
- self.remove_menu_item()
-
- self.window = None
- self.plugin = None
-
- def update_ui(self):
- return
-
- def commit_action(self, window):
- pass
-
- def add_action(self, window):
- pass
-
- def insert_menu_item(self, window):
- manager = self.window.get_ui_manager()
-
- self.action_group = gtk.ActionGroup("GitPluginActions")
-
- # Create an action for the "Run in python" menu option
- # and set it to call the "run_document_in_python" function.
- self.git_menu_action_ = gtk.Action(name="GitMenu", label="Git", tooltip="Manage git", stock_id=None)
- self.commit_action_ = gtk.Action(name="Commit", label="Commit", tooltip="Commit current state", stock_id=gtk.STOCK_GO_UP)
- self.add_action_ = gtk.Action(name="Add", label="Add to index", tooltip="", stock_id=gtk.STOCK_ADD)
- self.commit_action_.connect("activate", self.commit_action)
- self.add_action_.connect("activate", self.add_action)
-
- # Add the action with Ctrl + F5 as its keyboard shortcut.
- self.action_group.add_action(self.git_menu_action_)
- self.action_group.add_action(self.commit_action_)
- self.action_group.add_action(self.add_action_)
-
- # Add the action group.
- manager.insert_action_group(self.action_group, -1)
-
- # Add the item to the "Views" menu.
- self.ui_id = manager.add_ui_from_string(ui_string)
-
- def remove_menu_item(self):
- panel = self.window.get_side_panel()
-
- panel.remove_item(self.results_view)
+ def __init__(self, plugin, window):
+ self.window = window
+ self.plugin = plugin
+
+ self.ui_id = None
+
+ # Add a "toggle split view" item to the View menu
+ self.insert_menu_item(window)
+ self.load_dialogs()
+
+
+ # I hardly even know how this works, but it gets our encoding.
+ try: self.encoding = gedit.encoding_get_current()
+ except: self.encoding = gedit.gedit_encoding_get_current()
+
+ def deactivate(self):
+ self.remove_menu_item()
+
+ self.window = None
+ self.plugin = None
+
+ def update_ui(self):
+ return
+
+ def commit_action(self, window):
+ self._search_dialog.show()
+ pass
+
+ ###
+ # Called when the "Close" button is clicked.
+ def on_cancel_button_clicked(self, close_button):
+ self._search_dialog.hide()
+
+ def on_commit_button_clicked(self, close_button):
+ pass
+
+ ###
+ # Called when the text to be replaced is changed.
+ def on_commit_text_changed(self, commit_text_entry):
+ pass
+
+
+ def add_action(self, window):
+ pass
+
+ def insert_menu_item(self, window):
+ manager = self.window.get_ui_manager()
+
+ self.action_group = gtk.ActionGroup("GitPluginActions")
+
+ self.git_menu_action_ = gtk.Action(name="GitMenu", label="Git", tooltip="Manage git", stock_id=None)
+ self.commit_action_ = gtk.Action(name="Commit", label="Commit", tooltip="Commit current state", stock_id=gtk.STOCK_GO_UP)
+ self.add_action_ = gtk.Action(name="Add", label="Add to index", tooltip="", stock_id=gtk.STOCK_ADD)
+ self.commit_action_.connect("activate", self.commit_action)
+ self.add_action_.connect("activate", self.add_action)
+
+ self.action_group.add_action(self.git_menu_action_)
+ self.action_group.add_action(self.commit_action_)
+ self.action_group.add_action(self.add_action_)
+
+ # Add the action group.
+ manager.insert_action_group(self.action_group, -1)
+
+ self.ui_id = manager.add_ui_from_string(ui_string)
+
+ def remove_menu_item(self):
+ manager.remove_ui(self.ui_id)
+ manager.remove_action_group(self.action_group)
+ manager.ensure_update()
+
+ ###
+ # Load commit dialog.
+ # - Load dialog from its Glade file
+ # - Connect widget signals
+ # - Put needed widgets in object variables.
+ def load_dialogs(self):
+ self.glade_xml = gtk.glade.XML(GLADE_FILE)
+
+ self._search_dialog = self.glade_xml.get_widget("commit_dialog")
+ self._search_dialog.hide()
+ self._search_dialog.set_transient_for(self.window)
+ self._search_dialog.connect("delete_event", self._search_dialog.hide_on_delete)
+
+ self._find_button = self.glade_xml.get_widget("commit_button")
+ self._find_button.connect("clicked", self.on_commit_button_clicked)
+
+ close_button = self.glade_xml.get_widget("cancel_button")
+ close_button.connect("clicked", self.on_cancel_button_clicked)
+
+ self._search_text_box = self.glade_xml.get_widget("commit_text")
+ self._search_text_box.connect("changed", self.on_commit_text_changed)
class G_ed_it(gedit.Plugin):
- def __init__(self):
- gedit.Plugin.__init__(self)
- self.instances = {}
-
- def activate(self, window):
- self.instances[window] = PluginHelper(self, window)
-
- def deactivate(self, window):
- self.instances[window].deactivate()
-
- def update_ui(self, window):
- self.instances[window].update_ui()
+ def __init__(self):
+ gedit.Plugin.__init__(self)
+ self.instances = {}
+
+ def activate(self, window):
+ self.instances[window] = PluginHelper(self, window)
+
+ def deactivate(self, window):
+ self.instances[window].deactivate()
+
+ def update_ui(self, window):
+ self.instances[window].update_ui()