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

List:       kwrite-devel
Subject:    [PATCH] kate supports select charset.
From:       Takumi ASAKI <asataku () osk3 ! 3web ! ne ! jp>
Date:       2002-02-28 22:35:08
[Download RAW message or body]

Hi.

I wrote patch for kate to support select charset like konqueror.
kate can read/write any charset file.
I think it's useful.

But I need to add two function to kate-parts interface.
int getChset();
void set Chset(int);

Please review it.

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

["kdebase-3.0-cvs-kate-charset-20020228.diff" (text/x-diff)]

diff -ur /home/asaki/src/KDE/kde/kdebase/kate/app/katemainwindow.cpp \
                kdebase/kate/app/katemainwindow.cpp
--- /home/asaki/src/KDE/kde/kdebase/kate/app/katemainwindow.cpp	Tue Feb 26 21:15:16 \
                2002
+++ kdebase/kate/app/katemainwindow.cpp	Wed Feb 27 22:28:26 2002
@@ -42,6 +42,7 @@
 #include <kfiledialog.h>
 #include <kglobalaccel.h>
 #include <kglobal.h>
+#include <kcharsets.h>
 #include <kglobalsettings.h>
 #include <kiconloader.h>
 #include <kkeydialog.h>
@@ -267,6 +268,13 @@
   list.append("&Macintosh");
   setEndOfLine->setItems(list);
 
+  setCharset = new KSelectAction(i18n("&Charset"), 0, actionCollection(), \
"set_charset"); +  connect(setCharset, SIGNAL(activated(int)), viewManager, \
SLOT(setChset(int))); +  connect(setCharset->popupMenu(), SIGNAL(aboutToShow()), \
this, SLOT(setCharsetMenuAboutToShow())); +  list = \
KGlobal::charsets()->descriptiveEncodingNames(); +  list.prepend( i18n( "Auto" ) );
+  setCharset->setItems(list);
+
   documentReload = new KAction(i18n("Reloa&d"), "reload", Key_F5, viewManager, \
SLOT(reloadCurrentDoc()), actionCollection(), "file_reload");  
   documentOpenWith = new KActionMenu(i18n("Open W&ith"), actionCollection(), \
"file_open_with"); @@ -490,6 +498,7 @@
   setHighlight->updateMenu (viewManager->activeView()->getDoc());
 
   setEndOfLine->plug (documentMenu);
+  setCharset->plug (documentMenu);
   documentMenu->insertSeparator ();
 
   uint z=0;
@@ -630,6 +639,13 @@
   setEndOfLine->setCurrentItem( eol );
 }
 
+void KateMainWindow::setCharsetMenuAboutToShow()
+{
+  int chset = viewManager->activeView()->getChset();
+  chset = chset >= 0 ? chset : 0;
+  setCharset->setCurrentItem( chset );
+}
+
 void KateMainWindow::openURL (const QString &name)
 {
   viewManager->openURL (KURL(name));
diff -ur /home/asaki/src/KDE/kde/kdebase/kate/app/katemainwindow.h \
                kdebase/kate/app/katemainwindow.h
--- /home/asaki/src/KDE/kde/kdebase/kate/app/katemainwindow.h	Fri Feb  1 21:04:47 \
                2002
+++ kdebase/kate/app/katemainwindow.h	Wed Feb 27 22:06:22 2002
@@ -98,6 +98,7 @@
     KAction *goPrev;
 
     KSelectAction* setEndOfLine;
+    KSelectAction* setCharset;
     KAction* documentReload;
     KActionMenu* documentOpenWith;
     Kate::ActionMenu *setHighlight;
@@ -160,6 +161,7 @@
     void slotCurrentDocChanged();
     void documentMenuAboutToShow();
     void setEOLMenuAboutToShow();
+    void setCharsetMenuAboutToShow();
     void bookmarkMenuAboutToShow();
     void settingsMenuAboutToShow();
     //void slotSettingsShowFullPath();
diff -ur /home/asaki/src/KDE/kde/kdebase/kate/app/kateviewmanager.cpp \
                kdebase/kate/app/kateviewmanager.cpp
--- /home/asaki/src/KDE/kde/kdebase/kate/app/kateviewmanager.cpp	Tue Feb 26 22:59:42 \
                2002
+++ kdebase/kate/app/kateviewmanager.cpp	Wed Feb 27 20:40:14 2002
@@ -677,6 +677,12 @@
     activeView()->setEol( which );
 }
 
+void KateViewManager::setChset(int which)
+{
+  if (activeView())
+    activeView()->setChset( which );
+}
+
 void KateViewManager::slotSetHl (uint n)
 {
   if (activeView() == 0) return;
diff -ur /home/asaki/src/KDE/kde/kdebase/kate/app/kateviewmanager.h \
                kdebase/kate/app/kateviewmanager.h
--- /home/asaki/src/KDE/kde/kdebase/kate/app/kateviewmanager.h	Fri Jan 25 22:58:11 \
                2002
+++ kdebase/kate/app/kateviewmanager.h	Wed Feb 27 20:49:28 2002
@@ -192,6 +192,7 @@
     void slotUnComment ();
 
     void setEol(int);
+    void setChset(int);
     
     void toggleIconBorder ();
     void toggleLineNumbers();
diff -ur /home/asaki/src/KDE/kde/kdebase/kate/data/kateui.rc \
                kdebase/kate/data/kateui.rc
--- /home/asaki/src/KDE/kde/kdebase/kate/data/kateui.rc	Mon Feb 11 09:31:27 2002
+++ kdebase/kate/data/kateui.rc	Wed Feb 27 20:25:25 2002
@@ -57,6 +57,7 @@
     <Action name="scripts"/>
     <Action name="set_highlight"/>
     <Action name="set_eol"/>
+    <Action name="set_charset"/>
     <Separator />
   </Menu>
 


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

diff -ur /home/asaki/src/KDE/kde/kdelibs/kate/data/katepartreadonlyui.rc \
                kdelibs/kate/data/katepartreadonlyui.rc
--- /home/asaki/src/KDE/kde/kdelibs/kate/data/katepartreadonlyui.rc	Mon Feb 11 \
                00:25:18 2002
+++ kdelibs/kate/data/katepartreadonlyui.rc	Wed Feb 27 19:21:18 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 /home/asaki/src/KDE/kde/kdelibs/kate/data/katepartui.rc \
                kdelibs/kate/data/katepartui.rc
--- /home/asaki/src/KDE/kde/kdelibs/kate/data/katepartui.rc	Fri Jan 25 22:57:07 2002
+++ kdelibs/kate/data/katepartui.rc	Wed Feb 27 19:21:18 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 /home/asaki/src/KDE/kde/kdelibs/kate/interfaces/view.h \
                kdelibs/kate/interfaces/view.h
--- /home/asaki/src/KDE/kde/kdelibs/kate/interfaces/view.h	Sun Jan 27 13:27:21 2002
+++ kdelibs/kate/interfaces/view.h	Wed Feb 27 22:29:22 2002
@@ -211,6 +211,14 @@
     */
     virtual void setEol(int) { ; };
     /**
+      Get the Charset
+    */
+    virtual int getChset() { return 0L; };
+    /**
+      Set the Charset
+    */
+    virtual void setChset(int) { ; };
+    /**
       Set focus to the current window.
     */
     virtual void setFocus () { ; };
diff -ur /home/asaki/src/KDE/kde/kdelibs/kate/part/katedocument.cpp \
                kdelibs/kate/part/katedocument.cpp
--- /home/asaki/src/KDE/kde/kdelibs/kate/part/katedocument.cpp	Tue Feb 26 22:59:21 \
                2002
+++ kdelibs/kate/part/katedocument.cpp	Wed Feb 27 22:14:34 2002
@@ -304,6 +304,7 @@
   kspell.ksc = new KSpellConfig; //default KSpellConfig to start
   kspell.kspellon = false;
 
+  chset = 0;
   myEncoding = QString::fromLatin1(QTextCodec::codecForLocale()->name());
 
   setFont (ViewFont,KGlobalSettings::fixedFont());
diff -ur /home/asaki/src/KDE/kde/kdelibs/kate/part/katedocument.h \
                kdelibs/kate/part/katedocument.h
--- /home/asaki/src/KDE/kde/kdelibs/kate/part/katedocument.h	Tue Feb 26 21:14:37 2002
+++ kdelibs/kate/part/katedocument.h	Wed Feb 27 22:13:58 2002
@@ -729,6 +729,7 @@
 
     bool hlSetByUser;
 
+    int chset;
     QString myEncoding;
 
     QWidget *pseudoModal;   //the replace prompt is pseudo modal
diff -ur /home/asaki/src/KDE/kde/kdelibs/kate/part/kateview.cpp \
                kdelibs/kate/part/kateview.cpp
--- /home/asaki/src/KDE/kde/kdelibs/kate/part/kateview.cpp	Tue Feb 26 22:59:21 2002
+++ kdelibs/kate/part/kateview.cpp	Thu Feb 28 06:20:41 2002
@@ -1525,6 +1525,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(setChset(int)));
+  list = KGlobal::charsets()->descriptiveEncodingNames();
+  list.prepend( i18n( "Auto" ) );
+  setCharset->setItems(list);
 }
 
 void KateView::slotUpdate()
@@ -1537,7 +1543,11 @@
   int eol = getEol();
   eol = eol>=1 ? eol : 0;
 
-    setEndOfLine->setCurrentItem(eol);
+  setEndOfLine->setCurrentItem(eol);
+
+  int chset = getChset();
+  chset = chset >= 1 ? chset : 0;
+  setCharset->setCurrentItem(chset);
 }
 
 void KateView::slotNewUndo()
@@ -2381,6 +2391,24 @@
   myDoc->setModified(true);
 }
 
+int KateView::getChset() {
+  return myDoc->chset;
+}
+
+void KateView::setChset(int chset) {
+  QString enc;
+  if (chset == 0) {
+    enc = QTextCodec::codecForLocale()->name();
+  } else {
+    QString s = KGlobal::charsets()->descriptiveEncodingNames()[chset-1];
+    enc = KGlobal::charsets()->encodingForName(s);
+  }
+  // kdDebug() << "setChset(): encoding = " << enc << endl;
+  myDoc->chset = chset;
+  myDoc->myEncoding = enc;
+  // myDoc->setModified(true);
+}
+
 void KateView::resizeEvent(QResizeEvent *)
 {
   myViewInternal->tagAll();
diff -ur /home/asaki/src/KDE/kde/kdelibs/kate/part/kateview.h \
                kdelibs/kate/part/kateview.h
--- /home/asaki/src/KDE/kde/kdelibs/kate/part/kateview.h	Tue Feb 26 21:14:37 2002
+++ kdelibs/kate/part/kateview.h	Wed Feb 27 22:19:29 2002
@@ -352,6 +352,7 @@
 //    KToggleAction *viewLineNumbers;
     KRecentFilesAction *fileRecent;
     KSelectAction *setEndOfLine;
+    KSelectAction *setCharset;
     Kate::ActionMenu *setHighlight;
 
   private slots:
@@ -581,6 +582,14 @@
       Set the end of line mode (Unix, Macintosh or Dos)
     */
     void setEol(int);
+    /**
+      Set the file Charset
+    */
+    int getChset();
+    /**
+      Set the file Charset
+    */
+    void setChset(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