[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kwrite-devel
Subject:    Re: [PATCH] kate supports select charset.
From:       Takumi ASAKI <asataku () osk3 ! 3web ! ne ! jp>
Date:       2002-03-12 15:18:25
[Download RAW message or body]

Christoph Cullmann wrote:

>I would like for konqui (as we are in readonly mode there) the autoreload on
>character set change, like in khtml itself ;)

I remake patch for kateparts.
for readonly file, It's reload automaticaly.

Please review it.

-- 
  Che Che - Bye Bye
        From: Takumi ASAKI <asataku@osk3.3web.ne.jp>
	URL: http://www3.osk.3web.ne.jp/~asataku/

["kdelibs-3.0-cvs-kate-charset-20020309.diff" (text/x-diff)]

diff -ur kdelibs.orig/kate/data/katepartreadonlyui.rc \
                kdelibs/kate/data/katepartreadonlyui.rc
--- kdelibs.orig/kate/data/katepartreadonlyui.rc	Mon Feb 11 00:25:18 2002
+++ kdelibs/kate/data/katepartreadonlyui.rc	Fri Mar  8 09:00:01 2002
@@ -30,6 +30,7 @@
     <Action name="view_line_numbers"/>
     <Action name="set_highlight"/>
     <Action name="set_eol"/>
+    <Action name="set_charset"/>
   </Menu>
 </MenuBar>
 
diff -ur kdelibs.orig/kate/data/katepartui.rc kdelibs/kate/data/katepartui.rc
--- kdelibs.orig/kate/data/katepartui.rc	Fri Jan 25 22:57:07 2002
+++ kdelibs/kate/data/katepartui.rc	Fri Mar  8 09:00:01 2002
@@ -50,6 +50,7 @@
     <Action name="view_line_numbers"/>
     <Action name="set_highlight"/>
     <Action name="set_eol"/>
+    <Action name="set_charset"/>
   </Menu>
 </MenuBar>
 
diff -ur kdelibs.orig/kate/part/kateview.cpp kdelibs/kate/part/kateview.cpp
--- kdelibs.orig/kate/part/kateview.cpp	Fri Mar  8 01:49:01 2002
+++ kdelibs/kate/part/kateview.cpp	Sat Mar  9 18:51:07 2002
@@ -1542,6 +1542,12 @@
   list.append("&Windows/Dos");
   list.append("&Macintosh");
   setEndOfLine->setItems(list);
+
+  setCharset = new KSelectAction(i18n("&Charsets"), 0, ac, "set_charset");
+  connect(setCharset, SIGNAL(activated(int)), this, SLOT(setEncoding(int)));
+  list = KGlobal::charsets()->availableEncodingNames();
+  list.prepend( i18n( "Auto" ) );
+  setCharset->setItems(list);
 }
 
 void KateView::slotUpdate()
@@ -1554,7 +1560,14 @@
   int eol = getEol();
   eol = eol>=1 ? eol : 0;
 
-    setEndOfLine->setCurrentItem(eol);
+  setEndOfLine->setCurrentItem(eol);
+
+  QString enc = myDoc->encoding();
+  int chset = KGlobal::charsets()->availableEncodingNames().findIndex(enc);
+  if (chset < 0) /* Try again with upper */
+    chset = KGlobal::charsets()->availableEncodingNames().findIndex(enc.lower());
+  chset = chset >= 0 ? chset + 1 : 0;
+  setCharset->setCurrentItem(chset);
 }
 
 void KateView::slotNewUndo()
@@ -2469,6 +2482,22 @@
   myDoc->setModified(true);
 }
 
+void KateView::setEncoding(int chset) {
+  QString enc;
+  if (chset == 0) {
+    enc = QTextCodec::codecForLocale()->name();
+  } else {
+    enc = KGlobal::charsets()->availableEncodingNames()[chset-1];
+    // enc = KGlobal::charsets()->encodingForName(KGlobal::charsets()->availableEncodingNames()[chset-1]);
 +  }
+  // kdDebug() << "seEncoding(" << chset << "): encoding = " << enc << endl;
+  myDoc->setEncoding(enc);
+  // myDoc->setModified(true);
+  if (!doc()->isReadWrite()) {
+      myDoc->reloadFile();
+  }
+}
+
 void KateView::resizeEvent(QResizeEvent *)
 {
   myViewInternal->tagAll();
diff -ur kdelibs.orig/kate/part/kateview.h kdelibs/kate/part/kateview.h
--- kdelibs.orig/kate/part/kateview.h	Fri Mar  8 01:49:01 2002
+++ kdelibs/kate/part/kateview.h	Fri Mar  8 09:00:01 2002
@@ -365,6 +365,7 @@
 //    KToggleAction *viewLineNumbers;
     KRecentFilesAction *fileRecent;
     KSelectAction *setEndOfLine;
+    KSelectAction *setCharset;
     Kate::ActionMenu *setHighlight;
 
   private slots:
@@ -594,6 +595,10 @@
      * Set the end of line mode (Unix, Macintosh or Dos)
      */
     void setEol(int);
+    /**
+      Set the File Encoding
+    */
+    void setEncoding(int);
 
   private:
     void resizeEvent(QResizeEvent *);


_______________________________________________
kwrite-devel mailing list
kwrite-devel@mail.kde.org
http://mail.kde.org/mailman/listinfo/kwrite-devel

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic