[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