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

KDocTools

  • sources
  • kde-4.12
  • kdelibs
  • kdoctools
genshortcutents.cpp
Go to the documentation of this file.
1 /*
2  * genshortcutents.cpp - Copyright 2005 Frerich Raabe <raabe@kde.org>
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  * 1. Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  * notice, this list of conditions and the following disclaimer in the
12  * documentation and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
15  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
16  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
17  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
18  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
19  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
21  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  */
25 #include "kaboutdata.h"
26 #include "kcomponentdata.h"
27 #include "kcmdlineargs.h"
28 #include "klocale.h"
29 #include "kstandardshortcut.h"
30 
31 #include <QtCore/QDate>
32 #include <QtCore/QFile>
33 #include <QtCore/QCoreApplication>
34 #include <QtCore/QTextStream>
35 #include <QtCore/QStringList>
36 
37 static QString keyAsMarkup( const QString &key )
38 {
39  if ( key == "Alt" || key == "Ctrl" || key == "Enter" || key == "Esc" ||
40  key == "Shift" || key == "Tab" ) {
41  return QString('&' + key + ';');
42  }
43  if ( key == "Left" || key == "Right" || key == "Up" || key == "Down" ) {
44  return QString("<keysym>" + key + " Arrow</keysym>");
45  }
46  if ( key == "Backspace" || key == "Menu" ) {
47  return QString("<keysym>" + key + "</keysym>");
48  }
49  if ( key == "Plus" ) {
50  return QString("<keycap>+</keycap>");
51  }
52  if ( key == "Minus" ) {
53  return QString("<keycap>-</keycap>");
54  }
55  return QString("<keycap>" + key + "</keycap>");
56 }
57 
58 static QString entityForAccel( KStandardShortcut::StandardShortcut accel )
59 {
60  QString markup = "<!ENTITY KeyCombo_";
61 
62  /* We use a switch so that the compiler gives us warning messages in
63  * case KStandardShortcut::StandardShortcut gets extended (which means we have to
64  * extend this code, too).
65  */
66  switch ( accel ) {
67  case KStandardShortcut::AccelNone:
68  break;
69  case KStandardShortcut::Open:
70  markup += "Open";
71  break;
72  case KStandardShortcut::OpenRecent:
73  markup += "OpenRecent";
74  break;
75  case KStandardShortcut::New:
76  markup += "New";
77  break;
78  case KStandardShortcut::Close:
79  markup += "Close";
80  break;
81  case KStandardShortcut::Save:
82  markup += "Save";
83  break;
84  case KStandardShortcut::SaveAs:
85  markup += "SaveAs";
86  break;
87  case KStandardShortcut::Print:
88  markup += "Print";
89  break;
90  case KStandardShortcut::Quit:
91  markup += "Quit";
92  break;
93  case KStandardShortcut::Undo:
94  markup += "Undo";
95  break;
96  case KStandardShortcut::Redo:
97  markup += "Redo";
98  break;
99  case KStandardShortcut::Cut:
100  markup += "Cut";
101  break;
102  case KStandardShortcut::Copy:
103  markup += "Copy";
104  break;
105  case KStandardShortcut::Paste:
106  markup += "Paste";
107  break;
108  case KStandardShortcut::SelectAll:
109  markup += "SelectAll";
110  break;
111  case KStandardShortcut::Deselect:
112  markup += "Deselect";
113  break;
114  case KStandardShortcut::DeleteWordBack:
115  markup += "DeleteWordBack";
116  break;
117  case KStandardShortcut::DeleteWordForward:
118  markup += "DeleteWordForward";
119  break;
120  case KStandardShortcut::Find:
121  markup += "Find";
122  break;
123  case KStandardShortcut::FindNext:
124  markup += "FindNext";
125  break;
126  case KStandardShortcut::FindPrev:
127  markup += "FindPrev";
128  break;
129  case KStandardShortcut::Replace:
130  markup += "Replace";
131  break;
132  case KStandardShortcut::Home:
133  markup += "Home";
134  break;
135  case KStandardShortcut::Begin:
136  markup += "Begin";
137  break;
138  case KStandardShortcut::End:
139  markup += "End";
140  break;
141  case KStandardShortcut::Prior:
142  markup += "Prior";
143  break;
144  case KStandardShortcut::Next:
145  markup += "Next";
146  break;
147  case KStandardShortcut::GotoLine:
148  markup += "GotoLine";
149  break;
150  case KStandardShortcut::AddBookmark:
151  markup += "AddBookmark";
152  break;
153  case KStandardShortcut::ZoomIn:
154  markup += "ZoomIn";
155  break;
156  case KStandardShortcut::ZoomOut:
157  markup += "ZoomOut";
158  break;
159  case KStandardShortcut::Up:
160  markup += "Up";
161  break;
162  case KStandardShortcut::Back:
163  markup += "Back";
164  break;
165  case KStandardShortcut::Forward:
166  markup += "Forward";
167  break;
168  case KStandardShortcut::Reload:
169  markup += "Reload";
170  break;
171  case KStandardShortcut::ShowMenubar:
172  markup += "ShowMenubar";
173  break;
174  case KStandardShortcut::Help:
175  markup += "Help";
176  break;
177  case KStandardShortcut::WhatsThis:
178  markup += "WhatsThis";
179  break;
180  case KStandardShortcut::TextCompletion:
181  markup += "TextCompletion";
182  break;
183  case KStandardShortcut::PrevCompletion:
184  markup += "PrevCompletion";
185  break;
186  case KStandardShortcut::NextCompletion:
187  markup += "NextCompletion";
188  break;
189  case KStandardShortcut::SubstringCompletion:
190  markup += "SubstringCompletion";
191  break;
192  case KStandardShortcut::RotateUp:
193  markup += "RotateUp";
194  break;
195  case KStandardShortcut::RotateDown:
196  markup += "RotateDown";
197  break;
198  case KStandardShortcut::TabNext:
199  markup += "TabNext";
200  break;
201  case KStandardShortcut::TabPrev:
202  markup += "TabPrev";
203  break;
204  case KStandardShortcut::FullScreen:
205  markup += "FullScreen";
206  break;
207  case KStandardShortcut::BackwardWord:
208  markup += "BackwardWord";
209  break;
210  case KStandardShortcut::ForwardWord:
211  markup += "ForwardWord";
212  break;
213  case KStandardShortcut::BeginningOfLine:
214  markup += "BeginningOfLine";
215  break;
216  case KStandardShortcut::EndOfLine:
217  markup += "EndOfLine";
218  break;
219  case KStandardShortcut::PasteSelection:
220  markup += "PastSelection";
221  break;
222  case KStandardShortcut::Revert:
223  markup += "Revert";
224  break;
225  case KStandardShortcut::PrintPreview:
226  markup += "PrintPreview";
227  break;
228  case KStandardShortcut::Mail:
229  markup += "Mail";
230  break;
231  case KStandardShortcut::Clear:
232  markup += "Clear";
233  break;
234  case KStandardShortcut::ActualSize:
235  markup += "ActualSize";
236  break;
237  case KStandardShortcut::FitToPage:
238  markup += "FitToPage";
239  break;
240  case KStandardShortcut::FitToWidth:
241  markup += "FitToWidth";
242  break;
243  case KStandardShortcut::FitToHeight:
244  markup += "FitToHeight";
245  break;
246  case KStandardShortcut::Zoom:
247  markup += "Zoom";
248  break;
249  case KStandardShortcut::Goto:
250  markup += "Goto";
251  break;
252  case KStandardShortcut::GotoPage:
253  markup += "GotoPage";
254  break;
255  case KStandardShortcut::DocumentBack:
256  markup += "DocumentBack";
257  break;
258  case KStandardShortcut::DocumentForward:
259  markup += "DocumentForward";
260  break;
261  case KStandardShortcut::EditBookmarks:
262  markup += "EditBookmarks";
263  break;
264  case KStandardShortcut::Spelling:
265  markup += "Spelling";
266  break;
267  case KStandardShortcut::ShowToolbar:
268  markup += "ShowToolbar";
269  break;
270  case KStandardShortcut::ShowStatusbar:
271  markup += "ShowStatusbar";
272  break;
273  case KStandardShortcut::SaveOptions:
274  markup += "SaveOptions";
275  break;
276  case KStandardShortcut::KeyBindings:
277  markup += "KeyBindings";
278  break;
279  case KStandardShortcut::Preferences:
280  markup += "Preferences";
281  break;
282  case KStandardShortcut::ConfigureToolbars:
283  markup += "ConfigureToolbars";
284  break;
285  case KStandardShortcut::ConfigureNotifications:
286  markup += "ConfigureNotifications";
287  break;
288  case KStandardShortcut::TipofDay:
289  markup += "TipofDay";
290  break;
291  case KStandardShortcut::ReportBug:
292  markup += "ReportBug";
293  break;
294  case KStandardShortcut::SwitchApplicationLanguage:
295  markup += "SwitchApplicationLanguage";
296  break;
297  case KStandardShortcut::AboutApp:
298  markup += "AboutApp";
299  break;
300  case KStandardShortcut::AboutKDE:
301  markup += "AboutKDE";
302  break;
303  case KStandardShortcut::StandardShortcutCount:
304  break;
305  }
306 
307  markup += "\t\"";
308 
309  QString internalStr = KStandardShortcut::shortcut( accel ).toString();
310  QString firstSequence = internalStr.left( internalStr.indexOf( ';' ) );
311  const QStringList keys = firstSequence.split( '+',QString::SkipEmptyParts );
312  if ( keys.empty() ) {
313  return QString();
314  }
315 
316  if ( keys.count() == 1 ) {
317  if ( keys.first().startsWith( QLatin1String("XF86") ) ) {
318  return QString();
319  }
320  markup += keyAsMarkup( keys.first() );
321  } else {
322  markup += "<keycombo action=\"Simul\">";
323  foreach( const QString &key, keys ) {
324  if ( key.startsWith( QLatin1String("XF86") ) ) {
325  continue;
326  }
327  markup += keyAsMarkup( key );
328  }
329  markup += "</keycombo>";
330  }
331  markup += "\">";
332  return markup;
333 }
334 
335 int main( int argc, char **argv )
336 {
337  KCmdLineOptions cmdLineOptions;
338  cmdLineOptions.add("o");
339  cmdLineOptions.add("output <file>", ki18n("Output file"), "kde-standard-accels.entities");
340 
341  KAboutData aboutData( "genshortcutents", 0, ki18n("genshortcutents"), "1.0",
342  ki18n( "Generates DocBook entities for key shortcuts of standard actions" ));
343 
344  KCmdLineArgs::init( argc, argv, &aboutData );
345  KCmdLineArgs::addCmdLineOptions( cmdLineOptions );
346 
347  KComponentData componentData( &aboutData );
348  QCoreApplication app( KCmdLineArgs::qtArgc(), KCmdLineArgs::qtArgv() );
349 
350  KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
351 
352  const QString outputFileName = args->getOption( "output" );
353  QFile outputFile( outputFileName );
354  if ( !outputFile.open( QIODevice::WriteOnly ) ) {
355  qDebug( "Failed to open %s for writing.", qPrintable( outputFileName ) );
356  return 1;
357  }
358 
359  QTextStream stream( &outputFile );
360  stream << "<!-- Generated by "
361  << aboutData.programName() + ' '
362  << aboutData.version() + " on "
363  << QDateTime::currentDateTime().toString() + ".\n";
364  stream << " Do not bother to fiddle with this, your modifications will be\n"
365  << " overwritten as soon as the file is regenerated. -->\n";
366  stream << "\n";
367 
368  for ( unsigned int i = 0; i < KStandardShortcut::StandardShortcutCount; ++i ) {
369  stream << entityForAccel( static_cast<KStandardShortcut::StandardShortcut>(i) ) << "\n";
370  }
371 }
372 
KStandardShortcut::ActualSize
KStandardShortcut::FitToHeight
KCmdLineArgs::addCmdLineOptions
static void addCmdLineOptions(const KCmdLineOptions &options, const KLocalizedString &name=KLocalizedString(), const QByteArray &id=QByteArray(), const QByteArray &afterId=QByteArray())
KStandardShortcut::Back
KStandardShortcut::Find
KStandardShortcut::Close
KStandardShortcut::SelectAll
KStandardShortcut::ShowToolbar
KCmdLineArgs::qtArgc
static int & qtArgc()
KCmdLineOptions::add
KCmdLineOptions & add(const QByteArray &name, const KLocalizedString &description=KLocalizedString(), const QByteArray &defaultValue=QByteArray())
KStandardShortcut::StandardShortcutCount
KStandardShortcut::SubstringCompletion
KStandardShortcut::Prior
ki18n
KLocalizedString ki18n(const char *msg)
KStandardShortcut::ShowStatusbar
KStandardShortcut::Spelling
KCmdLineArgs::parsedArgs
static KCmdLineArgs * parsedArgs(const QByteArray &id=QByteArray())
KStandardShortcut::BeginningOfLine
KStandardShortcut::shortcut
const KShortcut & shortcut(StandardShortcut id)
KStandardShortcut::Cut
KCmdLineArgs
KStandardShortcut::Paste
KStandardShortcut::Help
KStandardShortcut::SaveAs
KStandardShortcut::Replace
KStandardShortcut::BackwardWord
QString
KStandardShortcut::PasteSelection
KCmdLineArgs::qtArgv
static char ** qtArgv()
klocale.h
KStandardShortcut::Next
KStandardShortcut::FullScreen
KStandardShortcut::SwitchApplicationLanguage
KStandardShortcut::DeleteWordBack
KStandardShortcut::ConfigureNotifications
KStandardShortcut::TabPrev
KStandardShortcut::End
KStandardShortcut::GotoLine
KStandardShortcut::Open
KStandardShortcut::PrevCompletion
KStandardShortcut::AddBookmark
KStandardShortcut::StandardShortcut
StandardShortcut
kcmdlineargs.h
QStringList
KStandardShortcut::OpenRecent
KStandardShortcut::Copy
KStandardShortcut::ReportBug
KStandardShortcut::ZoomOut
KStandardShortcut::AboutKDE
KAboutData
KStandardShortcut::EditBookmarks
KStandardShortcut::Begin
KStandardShortcut::Goto
KStandardShortcut::Redo
KStandardShortcut::ForwardWord
KStandardShortcut::FitToWidth
KStandardShortcut::Preferences
kstandardshortcut.h
KStandardShortcut::Clear
main
int main(int argc, char **argv)
Definition: genshortcutents.cpp:335
KStandardShortcut::Home
KStandardShortcut::Mail
KStandardShortcut::Forward
KStandardShortcut::FindNext
KStandardShortcut::TextCompletion
KStandardShortcut::ZoomIn
KAboutData::programName
QString programName() const
entityForAccel
static QString entityForAccel(KStandardShortcut::StandardShortcut accel)
Definition: genshortcutents.cpp:58
keyAsMarkup
static QString keyAsMarkup(const QString &key)
Definition: genshortcutents.cpp:37
KStandardShortcut::PrintPreview
KStandardShortcut::TipofDay
KStandardShortcut::FindPrev
KStandardShortcut::DocumentBack
KStandardShortcut::KeyBindings
KStandardShortcut::NextCompletion
KStandardShortcut::AboutApp
KStandardShortcut::RotateUp
KStandardShortcut::DocumentForward
KStandardShortcut::Zoom
KStandardShortcut::Quit
KStandardShortcut::FitToPage
KCmdLineArgs::init
static void init(int argc, char **argv, const QByteArray &appname, const QByteArray &catalog, const KLocalizedString &programName, const QByteArray &version, const KLocalizedString &description=KLocalizedString(), StdCmdLineArgs stdargs=StdCmdLineArgs(CmdLineArgQt|CmdLineArgKDE))
KStandardShortcut::Deselect
KStandardShortcut::Print
KStandardShortcut::Reload
KCmdLineArgs::getOption
QString getOption(const QByteArray &option) const
KAboutData::version
QString version() const
KStandardShortcut::RotateDown
KStandardShortcut::Save
KStandardShortcut::AccelNone
kaboutdata.h
KStandardShortcut::New
kcomponentdata.h
KStandardShortcut::DeleteWordForward
KStandardShortcut::Up
KStandardShortcut::TabNext
KShortcut::toString
QString toString() const
KCmdLineOptions
KStandardShortcut::GotoPage
KStandardShortcut::WhatsThis
KStandardShortcut::ShowMenubar
KComponentData
KStandardShortcut::ConfigureToolbars
KStandardShortcut::Undo
KStandardShortcut::SaveOptions
KStandardShortcut::Revert
KStandardShortcut::EndOfLine
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:51:03 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KDocTools

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

kdelibs API Reference

Skip menu "kdelibs API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  • kjsembed
  •   WTF
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Nepomuk-Core
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal