• Skip to content
  • Skip to link menu
KDE 4.3 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::OpenRecent:
00073             markup += "OpenRecent";
00074             break;
00075         case KStandardShortcut::New:
00076             markup += "New";
00077             break;
00078         case KStandardShortcut::Close:
00079             markup += "Close";
00080             break;
00081         case KStandardShortcut::Save:
00082             markup += "Save";
00083             break;
00084         case KStandardShortcut::SaveAs:
00085             markup += "SaveAs";
00086             break;
00087         case KStandardShortcut::Print:
00088             markup += "Print";
00089             break;
00090         case KStandardShortcut::Quit:
00091             markup += "Quit";
00092             break;
00093         case KStandardShortcut::Undo:
00094             markup += "Undo";
00095             break;
00096         case KStandardShortcut::Redo:
00097             markup += "Redo";
00098             break;
00099         case KStandardShortcut::Cut:
00100             markup += "Cut";
00101             break;
00102         case KStandardShortcut::Copy:
00103             markup += "Copy";
00104             break;
00105         case KStandardShortcut::Paste:
00106             markup += "Paste";
00107             break;
00108         case KStandardShortcut::SelectAll:
00109             markup += "SelectAll";
00110             break;
00111         case KStandardShortcut::Deselect:
00112             markup += "Deselect";
00113             break;
00114         case KStandardShortcut::DeleteWordBack:
00115             markup += "DeleteWordBack";
00116             break;
00117         case KStandardShortcut::DeleteWordForward:
00118             markup += "DeleteWordForward";
00119             break;
00120         case KStandardShortcut::Find:
00121             markup += "Find";
00122             break;
00123         case KStandardShortcut::FindNext:
00124             markup += "FindNext";
00125             break;
00126         case KStandardShortcut::FindPrev:
00127             markup += "FindPrev";
00128             break;
00129         case KStandardShortcut::Replace:
00130             markup += "Replace";
00131             break;
00132         case KStandardShortcut::Home:
00133             markup += "Home";
00134             break;
00135         case KStandardShortcut::Begin:
00136             markup += "Begin";
00137             break;
00138         case KStandardShortcut::End:
00139             markup += "End";
00140             break;
00141         case KStandardShortcut::Prior:
00142             markup += "Prior";
00143             break;
00144         case KStandardShortcut::Next:
00145             markup += "Next";
00146             break;
00147         case KStandardShortcut::GotoLine:
00148             markup += "GotoLine";
00149             break;
00150         case KStandardShortcut::AddBookmark:
00151             markup += "AddBookmark";
00152             break;
00153         case KStandardShortcut::ZoomIn:
00154             markup += "ZoomIn";
00155             break;
00156         case KStandardShortcut::ZoomOut:
00157             markup += "ZoomOut";
00158             break;
00159         case KStandardShortcut::Up:
00160             markup += "Up";
00161             break;
00162         case KStandardShortcut::Back:
00163             markup += "Back";
00164             break;
00165         case KStandardShortcut::Forward:
00166             markup += "Forward";
00167             break;
00168         case KStandardShortcut::Reload:
00169             markup += "Reload";
00170             break;
00171         case KStandardShortcut::ShowMenubar:
00172             markup += "ShowMenubar";
00173             break;
00174         case KStandardShortcut::Help:
00175             markup += "Help";
00176             break;
00177         case KStandardShortcut::WhatsThis:
00178             markup += "WhatsThis";
00179             break;
00180         case KStandardShortcut::TextCompletion:
00181             markup += "TextCompletion";
00182             break;
00183         case KStandardShortcut::PrevCompletion:
00184             markup += "PrevCompletion";
00185             break;
00186         case KStandardShortcut::NextCompletion:
00187             markup += "NextCompletion";
00188             break;
00189         case KStandardShortcut::SubstringCompletion:
00190             markup += "SubstringCompletion";
00191             break;
00192         case KStandardShortcut::RotateUp:
00193             markup += "RotateUp";
00194             break;
00195         case KStandardShortcut::RotateDown:
00196             markup += "RotateDown";
00197             break;
00198         case KStandardShortcut::TabNext:
00199             markup += "TabNext";
00200             break;
00201         case KStandardShortcut::TabPrev:
00202             markup += "TabPrev";
00203             break;
00204         case KStandardShortcut::FullScreen:
00205             markup += "FullScreen";
00206             break;
00207         case KStandardShortcut::BackwardWord:
00208             markup += "BackwardWord";
00209             break;
00210         case KStandardShortcut::ForwardWord:
00211             markup += "ForwardWord";
00212             break;
00213         case KStandardShortcut::BeginningOfLine:
00214             markup += "BeginningOfLine";
00215             break;
00216         case KStandardShortcut::EndOfLine:
00217             markup += "EndOfLine";
00218             break;
00219         case KStandardShortcut::PasteSelection:
00220             markup += "PastSelection";
00221             break;
00222         case KStandardShortcut::Revert:
00223             markup += "Revert";
00224             break;
00225         case KStandardShortcut::PrintPreview:
00226             markup += "PrintPreview";
00227             break;
00228         case KStandardShortcut::Mail:
00229             markup += "Mail";
00230             break;
00231         case KStandardShortcut::Clear:
00232             markup += "Clear";
00233             break;
00234         case KStandardShortcut::ActualSize:
00235             markup += "ActualSize";
00236             break;
00237         case KStandardShortcut::FitToPage:
00238             markup += "FitToPage";
00239             break;
00240         case KStandardShortcut::FitToWidth:
00241             markup += "FitToWidth";
00242             break;
00243         case KStandardShortcut::FitToHeight:
00244             markup += "FitToHeight";
00245             break;
00246         case KStandardShortcut::Zoom:
00247             markup += "Zoom";
00248             break;
00249         case KStandardShortcut::Goto:
00250             markup += "Goto";
00251             break;
00252         case KStandardShortcut::GotoPage:
00253             markup += "GotoPage";
00254             break;
00255         case KStandardShortcut::DocumentBack:
00256             markup += "DocumentBack";
00257             break;
00258         case KStandardShortcut::DocumentForward:
00259             markup += "DocumentForward";
00260             break;
00261         case KStandardShortcut::EditBookmarks:
00262             markup += "EditBookmarks";
00263             break;
00264         case KStandardShortcut::Spelling:
00265             markup += "Spelling";
00266             break;
00267         case KStandardShortcut::ShowToolbar:
00268             markup += "ShowToolbar";
00269             break;
00270         case KStandardShortcut::ShowStatusbar:
00271             markup += "ShowStatusbar";
00272             break;
00273         case KStandardShortcut::SaveOptions:
00274             markup += "SaveOptions";
00275             break;
00276         case KStandardShortcut::KeyBindings:
00277             markup += "KeyBindings";
00278             break;
00279         case KStandardShortcut::Preferences:
00280             markup += "Preferences";
00281             break;
00282         case KStandardShortcut::ConfigureToolbars:
00283             markup += "ConfigureToolbars";
00284             break;
00285         case KStandardShortcut::ConfigureNotifications:
00286             markup += "ConfigureNotifications";
00287             break;
00288         case KStandardShortcut::TipofDay:
00289             markup += "TipofDay";
00290             break;
00291         case KStandardShortcut::ReportBug:
00292             markup += "ReportBug";
00293             break;
00294         case KStandardShortcut::SwitchApplicationLanguage:
00295             markup += "SwitchApplicationLanguage";
00296             break;
00297         case KStandardShortcut::AboutApp:
00298             markup += "AboutApp";
00299             break;
00300         case KStandardShortcut::AboutKDE:
00301             markup += "AboutKDE";
00302             break;
00303         case KStandardShortcut::StandardShortcutCount:
00304             break;
00305     }
00306 
00307     markup += "\t\"";
00308 
00309     QString internalStr = KStandardShortcut::shortcut( accel ).toString();
00310     QString firstSequence = internalStr.left( internalStr.indexOf( ';' ) );
00311     const QStringList keys = firstSequence.split( '+',QString::SkipEmptyParts );
00312     if ( keys.empty() ) {
00313         return QString();
00314     }
00315 
00316     if ( keys.count() == 1 ) {
00317         if ( keys.first().startsWith( "XF86" ) ) {
00318             return QString();
00319         }
00320         markup += keyAsMarkup( keys.first() );
00321     } else {
00322         markup += "<keycombo action=\"Simul\">";
00323         foreach( const QString &key, keys ) {
00324             if ( key.startsWith( "XF86" ) ) {
00325                 continue;
00326             }
00327             markup += keyAsMarkup( key );
00328         }
00329         markup += "</keycombo>";
00330     }
00331     markup += "\">";
00332     return markup;
00333 }
00334 
00335 int main( int argc, char **argv )
00336 {
00337         KCmdLineOptions cmdLineOptions;
00338     cmdLineOptions.add("o");
00339     cmdLineOptions.add("output <file>", ki18n("Output file"), "kde-standard-accels.entities");
00340 
00341     KAboutData aboutData( "genshortcutents", 0, ki18n("genshortcutents"), "1.0",
00342                           ki18n( "Generates DocBook entities for key shortcuts of standard actions" ));
00343 
00344     KCmdLineArgs::init( argc, argv, &aboutData );
00345     KCmdLineArgs::addCmdLineOptions( cmdLineOptions );
00346 
00347     KComponentData componentData( &aboutData );
00348     QCoreApplication app( KCmdLineArgs::qtArgc(), KCmdLineArgs::qtArgv() );
00349 
00350     KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
00351 
00352     const QString outputFileName = args->getOption( "output" );
00353     QFile outputFile( outputFileName );
00354     if ( !outputFile.open( QIODevice::WriteOnly ) ) {
00355         qDebug( "Failed to open %s for writing.", qPrintable( outputFileName ) );
00356         return 1;
00357     }
00358 
00359     QTextStream stream( &outputFile );
00360     stream << "<!-- Generated by "
00361            << aboutData.programName() + ' '
00362            << aboutData.version() + " on "
00363            << QDateTime::currentDateTime().toString() + ".\n";
00364     stream << "     Do not bother to fiddle with this, your modifications will be\n"
00365            << "     overwritten as soon as the file is regenerated. -->\n";
00366     stream << "\n";
00367 
00368     for ( unsigned int i = 0; i < KStandardShortcut::StandardShortcutCount; ++i ) {
00369             stream << entityForAccel( static_cast<KStandardShortcut::StandardShortcut>(i)  ) << "\n";
00370     }
00371 }
00372 

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
  • KPty
  • Kross
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver
Generated for kdelibs by doxygen 1.6.1
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