• Skip to content
  • Skip to link menu
KDE 4.1 API Reference
  • KDE API Reference
  • kdelibs
  • Sitemap
  • Contact Us
 

KDocTools

genshortcutents.cpp

Go to the documentation of this file.
00001 /*
00002  * genshortcutents.cpp - Copyright 2005 Frerich Raabe <raabe@kde.org>
00003  *
00004  * Redistribution and use in source and binary forms, with or without
00005  * modification, are permitted provided that the following conditions
00006  * are met:
00007  *
00008  * 1. Redistributions of source code must retain the above copyright
00009  *    notice, this list of conditions and the following disclaimer.
00010  * 2. Redistributions in binary form must reproduce the above copyright
00011  *    notice, this list of conditions and the following disclaimer in the
00012  *    documentation and/or other materials provided with the distribution.
00013  *
00014  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
00015  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
00016  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
00017  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
00018  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
00019  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
00020  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
00021  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00022  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
00023  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00024  */
00025 #include "kaboutdata.h"
00026 #include "kcomponentdata.h"
00027 #include "kcmdlineargs.h"
00028 #include "klocale.h"
00029 #include "kstandardshortcut.h"
00030 
00031 #include <QtCore/QDate>
00032 #include <QtCore/QFile>
00033 #include <QtCore/QCoreApplication>
00034 #include <QtCore/QTextStream>
00035 #include <QtCore/QStringList>
00036 
00037 static QString keyAsMarkup( const QString &key )
00038 {
00039     if ( key == "Alt" || key == "Ctrl" || key == "Enter" || key == "Esc" ||
00040          key == "Shift" || key == "Tab" ) {
00041         return QString('&' + key + ';');
00042     }
00043     if ( key == "Left" || key == "Right" || key == "Up" || key == "Down" ) {
00044         return QString("<keysym>" + key + " Arrow</keysym>");
00045     }
00046     if ( key == "Backspace" || key == "Menu" ) {
00047         return QString("<keysym>" + key + "</keysym>");
00048     }
00049     if ( key == "Plus" ) {
00050         return QString("<keycap>+</keycap>");
00051     }
00052     if ( key == "Minus" ) {
00053         return QString("<keycap>-</keycap>");
00054     }
00055     return QString("<keycap>" + key + "</keycap>");
00056 }
00057 
00058 static QString entityForAccel( KStandardShortcut::StandardShortcut accel )
00059 {
00060     QString markup = "<!ENTITY KeyCombo_";
00061 
00062     /* We use a switch so that the compiler gives us warning messages in
00063      * case KStandardShortcut::StandardShortcut gets extended (which means we have to
00064      * extend this code, too).
00065      */
00066     switch ( accel ) {
00067         case KStandardShortcut::AccelNone:
00068             break;
00069         case KStandardShortcut::Open:
00070             markup += "Open";
00071             break;
00072         case KStandardShortcut::New:
00073             markup += "New";
00074             break;
00075         case KStandardShortcut::Close:
00076             markup += "Close";
00077             break;
00078         case KStandardShortcut::Save:
00079             markup += "Save";
00080             break;
00081         case KStandardShortcut::Print:
00082             markup += "Print";
00083             break;
00084         case KStandardShortcut::Quit:
00085             markup += "Quit";
00086             break;
00087         case KStandardShortcut::Undo:
00088             markup += "Undo";
00089             break;
00090         case KStandardShortcut::Redo:
00091             markup += "Redo";
00092             break;
00093         case KStandardShortcut::Cut:
00094             markup += "Cut";
00095             break;
00096         case KStandardShortcut::Copy:
00097             markup += "Copy";
00098             break;
00099         case KStandardShortcut::Paste:
00100             markup += "Paste";
00101             break;
00102         case KStandardShortcut::SelectAll:
00103             markup += "SelectAll";
00104             break;
00105         case KStandardShortcut::Deselect:
00106             markup += "Deselect";
00107             break;
00108         case KStandardShortcut::DeleteWordBack:
00109             markup += "DeleteWordBack";
00110             break;
00111         case KStandardShortcut::DeleteWordForward:
00112             markup += "DeleteWordForward";
00113             break;
00114         case KStandardShortcut::Find:
00115             markup += "Find";
00116             break;
00117         case KStandardShortcut::FindNext:
00118             markup += "FindNext";
00119             break;
00120         case KStandardShortcut::FindPrev:
00121             markup += "FindPrev";
00122             break;
00123         case KStandardShortcut::Replace:
00124             markup += "Replace";
00125             break;
00126         case KStandardShortcut::Home:
00127             markup += "Home";
00128             break;
00129         case KStandardShortcut::Begin:
00130             markup += "Begin";
00131             break;
00132         case KStandardShortcut::End:
00133             markup += "End";
00134             break;
00135         case KStandardShortcut::Prior:
00136             markup += "Prior";
00137             break;
00138         case KStandardShortcut::Next:
00139             markup += "Next";
00140             break;
00141         case KStandardShortcut::GotoLine:
00142             markup += "GotoLine";
00143             break;
00144         case KStandardShortcut::AddBookmark:
00145             markup += "AddBookmark";
00146             break;
00147         case KStandardShortcut::ZoomIn:
00148             markup += "ZoomIn";
00149             break;
00150         case KStandardShortcut::ZoomOut:
00151             markup += "ZoomOut";
00152             break;
00153         case KStandardShortcut::Up:
00154             markup += "Up";
00155             break;
00156         case KStandardShortcut::Back:
00157             markup += "Back";
00158             break;
00159         case KStandardShortcut::Forward:
00160             markup += "Forward";
00161             break;
00162         case KStandardShortcut::Reload:
00163             markup += "Reload";
00164             break;
00165         case KStandardShortcut::ShowMenubar:
00166             markup += "ShowMenubar";
00167             break;
00168         case KStandardShortcut::Help:
00169             markup += "Help";
00170             break;
00171         case KStandardShortcut::WhatsThis:
00172             markup += "WhatsThis";
00173             break;
00174         case KStandardShortcut::TextCompletion:
00175             markup += "TextCompletion";
00176             break;
00177         case KStandardShortcut::PrevCompletion:
00178             markup += "PrevCompletion";
00179             break;
00180         case KStandardShortcut::NextCompletion:
00181             markup += "NextCompletion";
00182             break;
00183         case KStandardShortcut::SubstringCompletion:
00184             markup += "SubstringCompletion";
00185             break;
00186         case KStandardShortcut::RotateUp:
00187             markup += "RotateUp";
00188             break;
00189         case KStandardShortcut::RotateDown:
00190             markup += "RotateDown";
00191             break;
00192         case KStandardShortcut::TabNext:
00193             markup += "TabNext";
00194             break;
00195         case KStandardShortcut::TabPrev:
00196             markup += "TabPrev";
00197             break;
00198         case KStandardShortcut::FullScreen:
00199             markup += "FullScreen";
00200             break;
00201         case KStandardShortcut::BackwardWord:
00202             markup += "BackwardWord";
00203             break;
00204         case KStandardShortcut::ForwardWord:
00205             markup += "ForwardWord";
00206             break;
00207         case KStandardShortcut::BeginningOfLine:
00208             markup += "BeginningOfLine";
00209             break;
00210         case KStandardShortcut::EndOfLine:
00211             markup += "EndOfLine";
00212             break;
00213         case KStandardShortcut::PasteSelection:
00214             markup += "PastSelection";
00215             break;
00216         case KStandardShortcut::StandardShortcutCount:
00217             break;
00218     }
00219 
00220     markup += "\t\"";
00221 
00222     QString internalStr = KStandardShortcut::shortcut( accel ).toString();
00223     QString firstSequence = internalStr.left( internalStr.indexOf( ';' ) );
00224     const QStringList keys = firstSequence.split( '+',QString::SkipEmptyParts );
00225     if ( keys.empty() ) {
00226         return QString();
00227     }
00228 
00229     if ( keys.count() == 1 ) {
00230         if ( keys.first().startsWith( "XF86" ) ) {
00231             return QString();
00232         }
00233         markup += keyAsMarkup( keys.first() );
00234     } else {
00235         markup += "<keycombo action=\"Simul\">";
00236         foreach( const QString &key, keys ) {
00237             if ( key.startsWith( "XF86" ) ) {
00238                 continue;
00239             }
00240             markup += keyAsMarkup( key );
00241         }
00242         markup += "</keycombo>";
00243     }
00244     markup += "\">";
00245     return markup;
00246 }
00247 
00248 int main( int argc, char **argv )
00249 {
00250         KCmdLineOptions cmdLineOptions;
00251     cmdLineOptions.add("o");
00252     cmdLineOptions.add("output <file>", ki18n("Output file"), "kde-standard-accels.entities");
00253 
00254     KAboutData aboutData( "genshortcutents", 0, ki18n("genshortcutents"), "1.0",
00255                           ki18n( "Generates DocBook entities for key shortcuts of standard actions" ));
00256 
00257     KCmdLineArgs::init( argc, argv, &aboutData );
00258     KCmdLineArgs::addCmdLineOptions( cmdLineOptions );
00259 
00260     KComponentData componentData( &aboutData );
00261     QCoreApplication app( KCmdLineArgs::qtArgc(), KCmdLineArgs::qtArgv() );
00262 
00263     KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
00264 
00265     const QString outputFileName = args->getOption( "output" );
00266     QFile outputFile( outputFileName );
00267     if ( !outputFile.open( QIODevice::WriteOnly ) ) {
00268         qDebug( "Failed to open %s for writing.", qPrintable( outputFileName ) );
00269         return 1;
00270     }
00271 
00272     QTextStream stream( &outputFile );
00273     stream << "<!-- Generated by "
00274            << aboutData.programName() + ' '
00275            << aboutData.version() + " on "
00276            << QDateTime::currentDateTime().toString() + ".\n";
00277     stream << "     Do not bother to fiddle with this, your modifications will be\n"
00278            << "     overwritten as soon as the file is regenerated. -->\n";
00279     stream << "\n";
00280 
00281     for ( unsigned int i = 0; i < KStandardShortcut::StandardShortcutCount; ++i ) {
00282             stream << entityForAccel( static_cast<KStandardShortcut::StandardShortcut>(i)  ) << "\n";
00283     }
00284 }
00285 

KDocTools

Skip menu "KDocTools"
  • Main Page
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Class Members
  • Related Pages

kdelibs

Skip menu "kdelibs"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • Kate
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • KIO
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • Kross
  • KUtils
  • Nepomuk
  • Solid
  • Sonnet
  • ThreadWeaver
Generated for kdelibs by doxygen 1.5.4
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal