git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Aneesh Kumar K.V" <aneesh.kumar@gmail.com>
To: git@vger.kernel.org, Junio C Hamano <junkio@cox.net>
Subject: gitview: Fix the encoding related bug
Date: Mon, 27 Feb 2006 21:25:13 +0530	[thread overview]
Message-ID: <440320E1.4080301@gmail.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 0 bytes --]



[-- Attachment #2: 0001-gitview-Fix-the-encoding-related-bug.txt --]
[-- Type: text/plain, Size: 2871 bytes --]

Subject: gitview: Fix the encoding related bug

Get the encoding information from repository and convert it to utf-8 before
passing to gtk.TextBuffer.set_text. gtk.TextBuffer.set_text work only with utf-8

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@gmail.com>

---

 contrib/gitview/gitview |   20 ++++++++++++++------
 1 files changed, 14 insertions(+), 6 deletions(-)

0900cf4b80aa18e314aa487d84189b8237d088e7
diff --git a/contrib/gitview/gitview b/contrib/gitview/gitview
index 4e3847d..1d042e3 100755
--- a/contrib/gitview/gitview
+++ b/contrib/gitview/gitview
@@ -391,7 +391,7 @@ class DiffWindow:
 		sourceview.show()
 
 
-	def set_diff(self, commit_sha1, parent_sha1):
+	def set_diff(self, commit_sha1, parent_sha1, encoding):
 		"""Set the differences showed by this window.
 		Compares the two trees and populates the window with the
 		differences.
@@ -401,7 +401,7 @@ class DiffWindow:
 			return
 
 		fp = os.popen("git diff-tree -p " + parent_sha1 + " " + commit_sha1)
-		self.buffer.set_text(fp.read())
+		self.buffer.set_text(unicode(fp.read(), encoding).encode('utf-8'))
 		fp.close()
 		self.window.show()
 
@@ -430,6 +430,7 @@ class GitView:
 		self.window.set_border_width(0)
 		self.window.set_title("Git repository browser")
 
+		self.get_encoding()
 		self.get_bt_sha1()
 
 		# Use three-quarters of the screen by default
@@ -468,6 +469,13 @@ class GitView:
 			self.bt_sha1[sha1].append(name)
 		fp.close()
 
+	def get_encoding(self):
+		fp = os.popen("git repo-config --get i18n.commitencoding")
+		self.encoding=string.strip(fp.readline())
+		fp.close()
+		if (self.encoding == ""):
+			self.encoding = "utf-8"
+
 
 	def construct(self):
 		"""Construct the window contents."""
@@ -683,7 +691,7 @@ class GitView:
 		self.revid_label.set_text(revid_label)
 		self.committer_label.set_text(committer)
 		self.timestamp_label.set_text(timestamp)
-		self.message_buffer.set_text(message)
+		self.message_buffer.set_text(unicode(message, self.encoding).encode('utf-8'))
 
 		for widget in self.parents_widgets:
 			self.table.remove(widget)
@@ -728,7 +736,7 @@ class GitView:
 			button.set_relief(gtk.RELIEF_NONE)
 			button.set_sensitive(True)
 			button.connect("clicked", self._show_clicked_cb,
-					commit.commit_sha1, parent_id)
+					commit.commit_sha1, parent_id, self.encoding)
 			hbox.pack_start(button, expand=False, fill=True)
 			button.show()
 
@@ -967,10 +975,10 @@ class GitView:
 
 		self.treeview.grab_focus()
 
-	def _show_clicked_cb(self, widget,  commit_sha1, parent_sha1):
+	def _show_clicked_cb(self, widget,  commit_sha1, parent_sha1, encoding):
 		"""Callback for when the show button for a parent is clicked."""
 		window = DiffWindow()
-		window.set_diff(commit_sha1, parent_sha1)
+		window.set_diff(commit_sha1, parent_sha1, encoding)
 		self.treeview.grab_focus()
 
 if __name__ == "__main__":
-- 
1.2.3.g2cf3-dirty


                 reply	other threads:[~2006-02-27 15:55 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=440320E1.4080301@gmail.com \
    --to=aneesh.kumar@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=junkio@cox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).