summaryrefslogtreecommitdiffstats
path: root/kdvi/optionDialogSpecialWidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kdvi/optionDialogSpecialWidget.cpp')
-rw-r--r--kdvi/optionDialogSpecialWidget.cpp135
1 files changed, 135 insertions, 0 deletions
diff --git a/kdvi/optionDialogSpecialWidget.cpp b/kdvi/optionDialogSpecialWidget.cpp
new file mode 100644
index 00000000..1e24f6cc
--- /dev/null
+++ b/kdvi/optionDialogSpecialWidget.cpp
@@ -0,0 +1,135 @@
+// optionDialogSpecialWidget.cpp
+//
+// Part of KDVI - A DVI previewer for the KDE desktop environemt
+//
+// (C) 2003 Stefan Kebekus
+// Distributed under the GPL
+
+// Add header files alphabetically
+
+#include <config.h>
+
+#include <kdebug.h>
+
+#include <kapplication.h>
+#include <kcombobox.h>
+#include <klineedit.h>
+#include <klocale.h>
+#include <kurllabel.h>
+#include <qcheckbox.h>
+#include <qlabel.h>
+
+#include "optionDialogSpecialWidget.h"
+#include "prefs.h"
+
+
+// Constructs a optionDialogWidget_base which is a child of 'parent', with
+// the name 'name' and widget flags set to 'f'.
+optionDialogSpecialWidget::optionDialogSpecialWidget( QWidget* parent, const char* name, WFlags fl )
+ : optionDialogSpecialWidget_base( parent, name, fl )
+{
+ // Set up the list of known and supported editors
+ editorNameString += i18n("User-Defined Editor");
+ editorCommandString += "";
+ editorDescriptionString += i18n("Enter the command line below.");
+
+ editorNameString += "Emacs / emacsclient";
+ editorCommandString += "emacsclient --no-wait +%l %f || emacs +%l %f";
+ editorDescriptionString += i18n("Click 'Help' to learn how to set up Emacs.");
+
+ editorNameString += "Kate";
+ editorCommandString += "kate --use --line %l %f";
+ editorDescriptionString += i18n("Kate perfectly supports inverse search.");
+
+ editorNameString += "Kile";
+ editorCommandString += "kile %f --line %l";
+ editorDescriptionString += i18n("Kile works very well");
+
+ editorNameString += "NEdit";
+ editorCommandString += "ncl -noask -line %l %f || nc -noask -line %l %f";
+ editorDescriptionString += i18n("NEdit perfectly supports inverse search.");
+
+ editorNameString += "VIM - Vi IMproved / GUI";
+ editorCommandString += "gvim --servername KDVI --remote-silent +%l %f";
+ editorDescriptionString += i18n("VIM version 6.0 or greater works just fine.");
+
+ editorNameString += "XEmacs / gnuclient";
+ editorCommandString += "gnuclient -q +%l %f || xemacs +%l %f";
+ editorDescriptionString += i18n("Click 'Help' to learn how to set up XEmacs.");
+
+ for(unsigned int i=0; i<editorNameString.count(); i++)
+ editorChoice->insertItem(editorNameString[i]);
+ // Set the proper editor on the "Rendering-Page", try to recognize
+ // the editor command from the config-file. If the editor command is
+ // not recognized, switch to "User defined editor". That way, kdvi
+ // stays compatible even if the EditorCommands[] change between
+ // different versions of kdvi.
+ QString currentEditorCommand = Prefs::editorCommand();
+ int i;
+ for(i = editorCommandString.count()-1; i>0; i--)
+ if (editorCommandString[i] == currentEditorCommand)
+ break;
+ if (i == 0)
+ usersEditorCommand = currentEditorCommand;
+ slotComboBox(i);
+
+ connect(urll, SIGNAL(leftClickedURL(const QString&)), this, SLOT(slotExtraHelpButton(const QString&)));
+ connect(editorChoice, SIGNAL( activated( int ) ), this, SLOT( slotComboBox( int ) ) );
+
+ // Editor description strings (and their translations) vary in
+ // size. Find the longest description string available to make sure
+ // that the page is always large enough.
+ int maximumWidth = 0;
+ for ( QStringList::Iterator it = editorDescriptionString.begin(); it != editorDescriptionString.end(); ++it ) {
+ int width = editorDescription->fontMetrics().width(*it);
+ if (width > maximumWidth)
+ maximumWidth = width;
+ }
+ editorDescription->setMinimumWidth(maximumWidth+10);
+
+ connect(kcfg_EditorCommand, SIGNAL( textChanged (const QString &) ), this, SLOT( slotUserDefdEditorCommand( const QString & ) ) );
+}
+
+optionDialogSpecialWidget::~optionDialogSpecialWidget()
+{
+}
+
+void optionDialogSpecialWidget::slotUserDefdEditorCommand( const QString &text )
+{
+ if (isUserDefdEditor == true)
+ EditorCommand = usersEditorCommand = text;
+}
+
+
+void optionDialogSpecialWidget::slotComboBox(int item)
+{
+ if (item != editorChoice->currentItem())
+ editorChoice->setCurrentItem(item);
+
+ editorDescription->setText(editorDescriptionString[item]);
+
+ if (item != 0) {
+ isUserDefdEditor = false;
+ kcfg_EditorCommand->setText(editorCommandString[item]);
+ kcfg_EditorCommand->setReadOnly(true);
+ EditorCommand = editorCommandString[item];
+ } else {
+ kcfg_EditorCommand->setText(usersEditorCommand);
+ kcfg_EditorCommand->setReadOnly(false);
+ EditorCommand = usersEditorCommand;
+ isUserDefdEditor = true;
+ }
+}
+
+void optionDialogSpecialWidget::slotExtraHelpButton( const QString & )
+{
+ kapp->invokeHelp( "inv-search", "kdvi" );
+}
+
+void optionDialogSpecialWidget::apply()
+{
+ Prefs::setEditorCommand(EditorCommand);
+}
+
+
+#include "optionDialogSpecialWidget.moc"