# HG changeset patch
# User Yuki KODAMA <[email protected]>
# Date 1244215934 -32400
# Node ID 8ad2d6462cee44826c66d1e43b191d654210a5bc
# Parent  38ff6ed0526d231de072e74be910f5aab7c2c3f0
thgconfig: provide the way to input a path directly

With this fix, the user can input directly a path to
'URL' textbox in PathEditDialog.

diff --git a/hggtk/thgconfig.py b/hggtk/thgconfig.py
--- a/hggtk/thgconfig.py
+++ b/hggtk/thgconfig.py
@@ -236,10 +236,9 @@
                      ('Alias', _('Alias'))):
             entry = gtk.Entry()
             label = gtk.Label(name[1])
-            self.entries[name[0]] = (entry, label)
+            self.entries[name[0]] = [entry, label, None]

         self.entries['URL'][0].set_width_chars(50)
-        self.entries['URL'][0].set_editable(False)
         self.entries['Password'][0].set_visibility(False)

         hbox = gtk.HBox()
@@ -274,24 +273,28 @@
             hbox.pack_start(self.entries[n][0], True, True, 2)
             vbox.pack_start(hbox, False, False, 2)

-        user, host, port, folder, pw, scheme = self.urlparse(path)
+        self.setentries(path, alias)

-        self.entries['URL'][0].set_text(path)
-        self.entries['Alias'][0].set_text(alias)
-        self.entries['User'][0].set_text(user or '')
-        self.entries['Host'][0].set_text(host or '')
-        self.entries['Port'][0].set_text(port or '')
-        self.entries['Folder'][0].set_text(folder or '')
-        self.entries['Password'][0].set_text(pw or '')
-        for n, (e, l) in self.entries.iteritems():
-            e.connect('changed', self.changed)
+        self.sethandlers()

         self.lastproto = None
         self.protcombo.connect('changed', self.changed)
-        i = self._protocols.index(scheme)
-        self.protcombo.set_active(i)
+        self.update_sensitive()
         self.show_all()

+    def sethandlers(self, enable=True):
+        for n, (e, l, h) in self.entries.iteritems():
+            if n == 'URL':
+                if enable:
+                    self.entries[n][2] = e.connect('changed', self.changedurl)
+                else:
+                    e.disconnect(h)
+            else:
+                if enable:
+                    self.entries[n][2] = e.connect('changed', self.changed)
+                else:
+                    e.disconnect(h)
+
     def urlparse(self, path):
         if path.startswith('ssh://'):
             m = re.match(r'^ssh://(([...@]+)@)?([^:/]+)(:(\d+))?(/(.*))?$', 
path)
@@ -312,9 +315,24 @@
             scheme = 'local'
         return user, host, port, folder, passwd, scheme

-    def changed(self, combo):
-        newurl = self.buildurl()
-        self.entries['URL'][0].set_text(url.hidepassword(newurl))
+    def setentries(self, path, alias=None):
+        if alias == None:
+            alias = self.entries['Alias'][0].get_text()
+
+        user, host, port, folder, pw, scheme = self.urlparse(path)
+
+        self.entries['Alias'][0].set_text(alias)
+        self.entries['URL'][0].set_text(url.hidepassword(path))
+        self.entries['User'][0].set_text(user or '')
+        self.entries['Host'][0].set_text(host or '')
+        self.entries['Port'][0].set_text(port or '')
+        self.entries['Folder'][0].set_text(folder or '')
+        self.entries['Password'][0].set_text(pw or '')
+
+        i = self._protocols.index(scheme)
+        self.protcombo.set_active(i)
+
+    def update_sensitive(self):
         proto = self.protcombo.get_active_text()
         if proto == self.lastproto:
             return
@@ -334,6 +352,19 @@
                 self.entries[n][0].set_sensitive(True)
                 self.entries[n][1].set_sensitive(True)

+    def changed(self, combo):
+        newurl = self.buildurl()
+        self.sethandlers(False)
+        self.entries['URL'][0].set_text(url.hidepassword(newurl))
+        self.sethandlers(True)
+        self.update_sensitive()
+
+    def changedurl(self, combo):
+        self.sethandlers(False)
+        self.setentries(self.entries['URL'][0].get_text())
+        self.sethandlers(True)
+        self.update_sensitive()
+
     def response(self, widget, response_id):
         if response_id != gtk.RESPONSE_OK:
             self.destroy()

Attachment: thg-crew-kuy_rev2768.patch
Description: Binary data

------------------------------------------------------------------------------
OpenSolaris 2009.06 is a cutting edge operating system for enterprises 
looking to deploy the next generation of Solaris that includes the latest 
innovations from Sun and the OpenSource community. Download a copy and 
enjoy capabilities such as Networking, Storage and Virtualization. 
Go to: http://p.sf.net/sfu/opensolaris-get
_______________________________________________
Tortoisehg-develop mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tortoisehg-develop

Reply via email to