annotate libqterminal/KeyboardTranslator.h @ 15630:e32ff0a000a8

Removed useless files, renamed files appropriately.
author Jacob Dawid <jacob.dawid@googlemail.com>
date Mon, 23 Jan 2012 12:31:32 +0100
parents
children 29c817466160
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15630
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
1 /*
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
2 This source file is part of Konsole, a terminal emulator.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
3
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
4 Copyright (C) 2007 by Robert Knight <robertknight@gmail.com>
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
5
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
6 Rewritten for QT4 by e_k <e_k at users.sourceforge.net>, Copyright (C)2008
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
7
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
8 This program is free software; you can redistribute it and/or modify
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
9 it under the terms of the GNU General Public License as published by
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
10 the Free Software Foundation; either version 2 of the License, or
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
11 (at your option) any later version.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
12
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
13 This program is distributed in the hope that it will be useful,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
16 GNU General Public License for more details.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
17
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
19 along with this program; if not, write to the Free Software
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
20 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
21 02110-1301 USA.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
22 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
23
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
24 #ifndef KEYBOARDTRANSLATOR_H
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
25 #define KEYBOARDTRANSLATOR_H
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
26
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
27 // Qt
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
28 #include <QtCore/QHash>
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
29 #include <QtCore/QList>
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
30 #include <QtGui/QKeySequence>
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
31 #include <QtCore/QMetaType>
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
32 #include <QtCore/QVarLengthArray>
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
33 #include <QtCore>
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
34
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
35 typedef void (*CleanUpFunction)();
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
36
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
37 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
38 * @internal
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
39 *
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
40 * Helper class for K_GLOBAL_STATIC to clean up the object on library unload or application
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
41 * shutdown.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
42 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
43 class CleanUpGlobalStatic
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
44 {
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
45 public:
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
46 CleanUpFunction func;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
47
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
48 inline ~CleanUpGlobalStatic() { func(); }
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
49 };
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
50
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
51
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
52 //these directives are taken from the heart of kdecore
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
53
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
54 # define K_GLOBAL_STATIC_STRUCT_NAME(NAME)
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
55
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
56 #if QT_VERSION < 0x040400
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
57 # define Q_BASIC_ATOMIC_INITIALIZER Q_ATOMIC_INIT
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
58 # define testAndSetOrdered testAndSet
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
59 #endif
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
60
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
61 #define K_GLOBAL_STATIC(TYPE, NAME) K_GLOBAL_STATIC_WITH_ARGS(TYPE, NAME, ())
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
62
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
63 #define K_GLOBAL_STATIC_WITH_ARGS(TYPE, NAME, ARGS) \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
64 static QBasicAtomicPointer<TYPE > _k_static_##NAME = Q_BASIC_ATOMIC_INITIALIZER(0); \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
65 static bool _k_static_##NAME##_destroyed; \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
66 static struct K_GLOBAL_STATIC_STRUCT_NAME(NAME) \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
67 { \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
68 bool isDestroyed() \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
69 { \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
70 return _k_static_##NAME##_destroyed; \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
71 } \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
72 inline operator TYPE*() \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
73 { \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
74 return operator->(); \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
75 } \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
76 inline TYPE *operator->() \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
77 { \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
78 if (!_k_static_##NAME) { \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
79 if (isDestroyed()) { \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
80 qFatal("Fatal Error: Accessed global static '%s *%s()' after destruction. " \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
81 "Defined at %s:%d", #TYPE, #NAME, __FILE__, __LINE__); \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
82 } \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
83 TYPE *x = new TYPE ARGS; \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
84 if (!_k_static_##NAME.testAndSetOrdered(0, x) \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
85 && _k_static_##NAME != x ) { \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
86 delete x; \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
87 } else { \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
88 static CleanUpGlobalStatic cleanUpObject = { destroy }; \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
89 } \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
90 } \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
91 return _k_static_##NAME; \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
92 } \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
93 inline TYPE &operator*() \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
94 { \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
95 return *operator->(); \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
96 } \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
97 static void destroy() \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
98 { \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
99 _k_static_##NAME##_destroyed = true; \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
100 TYPE *x = _k_static_##NAME; \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
101 _k_static_##NAME = 0; \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
102 delete x; \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
103 } \
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
104 } NAME;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
105
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
106
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
107
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
108
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
109
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
110 class QIODevice;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
111 class QTextStream;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
112
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
113 namespace Konsole
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
114 {
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
115
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
116 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
117 * A convertor which maps between key sequences pressed by the user and the
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
118 * character strings which should be sent to the terminal and commands
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
119 * which should be invoked when those character sequences are pressed.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
120 *
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
121 * Konsole supports multiple keyboard translators, allowing the user to
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
122 * specify the character sequences which are sent to the terminal
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
123 * when particular key sequences are pressed.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
124 *
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
125 * A key sequence is defined as a key code, associated keyboard modifiers
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
126 * (Shift,Ctrl,Alt,Meta etc.) and state flags which indicate the state
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
127 * which the terminal must be in for the key sequence to apply.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
128 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
129 class KeyboardTranslator
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
130 {
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
131 public:
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
132 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
133 * The meaning of a particular key sequence may depend upon the state which
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
134 * the terminal emulation is in. Therefore findEntry() may return a different
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
135 * Entry depending upon the state flags supplied.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
136 *
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
137 * This enum describes the states which may be associated with with a particular
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
138 * entry in the keyboard translation entry.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
139 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
140 enum State
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
141 {
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
142 /** Indicates that no special state is active */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
143 NoState = 0,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
144 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
145 * TODO More documentation
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
146 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
147 NewLineState = 1,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
148 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
149 * Indicates that the terminal is in 'Ansi' mode.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
150 * TODO: More documentation
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
151 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
152 AnsiState = 2,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
153 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
154 * TODO More documentation
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
155 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
156 CursorKeysState = 4,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
157 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
158 * Indicates that the alternate screen ( typically used by interactive programs
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
159 * such as screen or vim ) is active
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
160 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
161 AlternateScreenState = 8,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
162 /** Indicates that any of the modifier keys is active. */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
163 AnyModifierState = 16
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
164 };
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
165 Q_DECLARE_FLAGS(States,State)
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
166
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
167 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
168 * This enum describes commands which are associated with particular key sequences.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
169 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
170 enum Command
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
171 {
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
172 /** Indicates that no command is associated with this command sequence */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
173 NoCommand = 0,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
174 /** TODO Document me */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
175 SendCommand = 1,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
176 /** Scroll the terminal display up one page */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
177 ScrollPageUpCommand = 2,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
178 /** Scroll the terminal display down one page */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
179 ScrollPageDownCommand = 4,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
180 /** Scroll the terminal display up one line */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
181 ScrollLineUpCommand = 8,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
182 /** Scroll the terminal display down one line */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
183 ScrollLineDownCommand = 16,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
184 /** Toggles scroll lock mode */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
185 ScrollLockCommand = 32,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
186 /** Echos the operating system specific erase character. */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
187 EraseCommand = 64
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
188 };
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
189 Q_DECLARE_FLAGS(Commands,Command)
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
190
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
191 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
192 * Represents an association between a key sequence pressed by the user
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
193 * and the character sequence and commands associated with it for a particular
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
194 * KeyboardTranslator.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
195 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
196 class Entry
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
197 {
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
198 public:
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
199 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
200 * Constructs a new entry for a keyboard translator.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
201 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
202 Entry();
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
203
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
204 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
205 * Returns true if this entry is null.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
206 * This is true for newly constructed entries which have no properties set.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
207 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
208 bool isNull() const;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
209
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
210 /** Returns the commands associated with this entry */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
211 Command command() const;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
212 /** Sets the command associated with this entry. */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
213 void setCommand(Command command);
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
214
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
215 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
216 * Returns the character sequence associated with this entry, optionally replacing
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
217 * wildcard '*' characters with numbers to indicate the keyboard modifiers being pressed.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
218 *
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
219 * TODO: The numbers used to replace '*' characters are taken from the Konsole/KDE 3 code.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
220 * Document them.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
221 *
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
222 * @param expandWildCards Specifies whether wild cards (occurrences of the '*' character) in
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
223 * the entry should be replaced with a number to indicate the modifier keys being pressed.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
224 *
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
225 * @param modifiers The keyboard modifiers being pressed.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
226 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
227 QByteArray text(bool expandWildCards = false,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
228 Qt::KeyboardModifiers modifiers = Qt::NoModifier) const;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
229
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
230 /** Sets the character sequence associated with this entry */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
231 void setText(const QByteArray& text);
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
232
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
233 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
234 * Returns the character sequence associated with this entry,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
235 * with any non-printable characters replaced with escape sequences.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
236 *
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
237 * eg. \\E for Escape, \\t for tab, \\n for new line.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
238 *
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
239 * @param expandWildCards See text()
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
240 * @param modifiers See text()
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
241 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
242 QByteArray escapedText(bool expandWildCards = false,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
243 Qt::KeyboardModifiers modifiers = Qt::NoModifier) const;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
244
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
245 /** Returns the character code ( from the Qt::Key enum ) associated with this entry */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
246 int keyCode() const;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
247 /** Sets the character code associated with this entry */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
248 void setKeyCode(int keyCode);
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
249
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
250 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
251 * Returns a bitwise-OR of the enabled keyboard modifiers associated with this entry.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
252 * If a modifier is set in modifierMask() but not in modifiers(), this means that the entry
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
253 * only matches when that modifier is NOT pressed.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
254 *
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
255 * If a modifier is not set in modifierMask() then the entry matches whether the modifier
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
256 * is pressed or not.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
257 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
258 Qt::KeyboardModifiers modifiers() const;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
259
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
260 /** Returns the keyboard modifiers which are valid in this entry. See modifiers() */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
261 Qt::KeyboardModifiers modifierMask() const;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
262
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
263 /** See modifiers() */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
264 void setModifiers( Qt::KeyboardModifiers modifiers );
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
265 /** See modifierMask() and modifiers() */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
266 void setModifierMask( Qt::KeyboardModifiers modifiers );
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
267
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
268 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
269 * Returns a bitwise-OR of the enabled state flags associated with this entry.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
270 * If flag is set in stateMask() but not in state(), this means that the entry only
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
271 * matches when the terminal is NOT in that state.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
272 *
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
273 * If a state is not set in stateMask() then the entry matches whether the terminal
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
274 * is in that state or not.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
275 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
276 States state() const;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
277
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
278 /** Returns the state flags which are valid in this entry. See state() */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
279 States stateMask() const;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
280
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
281 /** See state() */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
282 void setState( States state );
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
283 /** See stateMask() */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
284 void setStateMask( States mask );
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
285
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
286 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
287 * Returns the key code and modifiers associated with this entry
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
288 * as a QKeySequence
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
289 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
290 //QKeySequence keySequence() const;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
291
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
292 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
293 * Returns this entry's conditions ( ie. its key code, modifier and state criteria )
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
294 * as a string.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
295 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
296 QString conditionToString() const;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
297
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
298 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
299 * Returns this entry's result ( ie. its command or character sequence )
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
300 * as a string.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
301 *
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
302 * @param expandWildCards See text()
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
303 * @param modifiers See text()
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
304 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
305 QString resultToString(bool expandWildCards = false,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
306 Qt::KeyboardModifiers modifiers = Qt::NoModifier) const;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
307
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
308 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
309 * Returns true if this entry matches the given key sequence, specified
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
310 * as a combination of @p keyCode , @p modifiers and @p state.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
311 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
312 bool matches( int keyCode ,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
313 Qt::KeyboardModifiers modifiers ,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
314 States flags ) const;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
315
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
316 bool operator==(const Entry& rhs) const;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
317
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
318 private:
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
319 void insertModifier( QString& item , int modifier ) const;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
320 void insertState( QString& item , int state ) const;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
321 QByteArray unescape(const QByteArray& text) const;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
322
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
323 int _keyCode;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
324 Qt::KeyboardModifiers _modifiers;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
325 Qt::KeyboardModifiers _modifierMask;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
326 States _state;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
327 States _stateMask;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
328
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
329 Command _command;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
330 QByteArray _text;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
331 };
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
332
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
333 /** Constructs a new keyboard translator with the given @p name */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
334 KeyboardTranslator(const QString& name);
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
335
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
336 //KeyboardTranslator(const KeyboardTranslator& other);
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
337
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
338 /** Returns the name of this keyboard translator */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
339 QString name() const;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
340
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
341 /** Sets the name of this keyboard translator */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
342 void setName(const QString& name);
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
343
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
344 /** Returns the descriptive name of this keyboard translator */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
345 QString description() const;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
346
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
347 /** Sets the descriptive name of this keyboard translator */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
348 void setDescription(const QString& description);
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
349
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
350 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
351 * Looks for an entry in this keyboard translator which matches the given
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
352 * key code, keyboard modifiers and state flags.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
353 *
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
354 * Returns the matching entry if found or a null Entry otherwise ( ie.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
355 * entry.isNull() will return true )
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
356 *
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
357 * @param keyCode A key code from the Qt::Key enum
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
358 * @param modifiers A combination of modifiers
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
359 * @param state Optional flags which specify the current state of the terminal
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
360 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
361 Entry findEntry(int keyCode ,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
362 Qt::KeyboardModifiers modifiers ,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
363 States state = NoState) const;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
364
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
365 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
366 * Adds an entry to this keyboard translator's table. Entries can be looked up according
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
367 * to their key sequence using findEntry()
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
368 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
369 void addEntry(const Entry& entry);
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
370
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
371 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
372 * Replaces an entry in the translator. If the @p existing entry is null,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
373 * then this is equivalent to calling addEntry(@p replacement)
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
374 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
375 void replaceEntry(const Entry& existing , const Entry& replacement);
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
376
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
377 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
378 * Removes an entry from the table.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
379 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
380 void removeEntry(const Entry& entry);
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
381
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
382 /** Returns a list of all entries in the translator. */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
383 QList<Entry> entries() const;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
384
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
385 private:
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
386
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
387 QHash<int,Entry> _entries; // entries in this keyboard translation,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
388 // entries are indexed according to
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
389 // their keycode
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
390 QString _name;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
391 QString _description;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
392 };
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
393 Q_DECLARE_OPERATORS_FOR_FLAGS(KeyboardTranslator::States)
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
394 Q_DECLARE_OPERATORS_FOR_FLAGS(KeyboardTranslator::Commands)
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
395
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
396 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
397 * Parses the contents of a Keyboard Translator (.keytab) file and
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
398 * returns the entries found in it.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
399 *
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
400 * Usage example:
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
401 *
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
402 * @code
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
403 * QFile source( "/path/to/keytab" );
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
404 * source.open( QIODevice::ReadOnly );
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
405 *
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
406 * KeyboardTranslator* translator = new KeyboardTranslator( "name-of-translator" );
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
407 *
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
408 * KeyboardTranslatorReader reader(source);
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
409 * while ( reader.hasNextEntry() )
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
410 * translator->addEntry(reader.nextEntry());
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
411 *
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
412 * source.close();
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
413 *
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
414 * if ( !reader.parseError() )
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
415 * {
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
416 * // parsing succeeded, do something with the translator
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
417 * }
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
418 * else
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
419 * {
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
420 * // parsing failed
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
421 * }
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
422 * @endcode
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
423 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
424 class KeyboardTranslatorReader
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
425 {
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
426 public:
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
427 /** Constructs a new reader which parses the given @p source */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
428 KeyboardTranslatorReader( QIODevice* source );
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
429
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
430 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
431 * Returns the description text.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
432 * TODO: More documentation
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
433 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
434 QString description() const;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
435
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
436 /** Returns true if there is another entry in the source stream */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
437 bool hasNextEntry();
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
438 /** Returns the next entry found in the source stream */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
439 KeyboardTranslator::Entry nextEntry();
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
440
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
441 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
442 * Returns true if an error occurred whilst parsing the input or
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
443 * false if no error occurred.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
444 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
445 bool parseError();
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
446
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
447 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
448 * Parses a condition and result string for a translator entry
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
449 * and produces a keyboard translator entry.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
450 *
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
451 * The condition and result strings are in the same format as in
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
452 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
453 static KeyboardTranslator::Entry createEntry( const QString& condition ,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
454 const QString& result );
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
455 private:
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
456 struct Token
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
457 {
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
458 enum Type
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
459 {
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
460 TitleKeyword,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
461 TitleText,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
462 KeyKeyword,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
463 KeySequence,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
464 Command,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
465 OutputText
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
466 };
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
467 Type type;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
468 QString text;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
469 };
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
470 QList<Token> tokenize(const QString&);
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
471 void readNext();
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
472 bool decodeSequence(const QString& ,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
473 int& keyCode,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
474 Qt::KeyboardModifiers& modifiers,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
475 Qt::KeyboardModifiers& modifierMask,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
476 KeyboardTranslator::States& state,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
477 KeyboardTranslator::States& stateFlags);
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
478
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
479 static bool parseAsModifier(const QString& item , Qt::KeyboardModifier& modifier);
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
480 static bool parseAsStateFlag(const QString& item , KeyboardTranslator::State& state);
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
481 static bool parseAsKeyCode(const QString& item , int& keyCode);
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
482 static bool parseAsCommand(const QString& text , KeyboardTranslator::Command& command);
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
483
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
484 QIODevice* _source;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
485 QString _description;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
486 KeyboardTranslator::Entry _nextEntry;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
487 bool _hasNext;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
488 };
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
489
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
490 /** Writes a keyboard translation to disk. */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
491 class KeyboardTranslatorWriter
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
492 {
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
493 public:
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
494 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
495 * Constructs a new writer which saves data into @p destination.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
496 * The caller is responsible for closing the device when writing is complete.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
497 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
498 KeyboardTranslatorWriter(QIODevice* destination);
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
499 ~KeyboardTranslatorWriter();
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
500
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
501 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
502 * Writes the header for the keyboard translator.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
503 * @param description Description of the keyboard translator.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
504 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
505 void writeHeader( const QString& description );
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
506 /** Writes a translator entry. */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
507 void writeEntry( const KeyboardTranslator::Entry& entry );
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
508
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
509 private:
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
510 QIODevice* _destination;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
511 QTextStream* _writer;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
512 };
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
513
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
514 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
515 * Manages the keyboard translations available for use by terminal sessions,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
516 * see KeyboardTranslator.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
517 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
518 class KeyboardTranslatorManager
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
519 {
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
520 public:
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
521 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
522 * Constructs a new KeyboardTranslatorManager and loads the list of
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
523 * available keyboard translations.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
524 *
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
525 * The keyboard translations themselves are not loaded until they are
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
526 * first requested via a call to findTranslator()
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
527 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
528 KeyboardTranslatorManager();
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
529 ~KeyboardTranslatorManager();
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
530
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
531 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
532 * Adds a new translator. If a translator with the same name
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
533 * already exists, it will be replaced by the new translator.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
534 *
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
535 * TODO: More documentation.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
536 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
537 void addTranslator(KeyboardTranslator* translator);
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
538
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
539 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
540 * Deletes a translator. Returns true on successful deletion or false otherwise.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
541 *
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
542 * TODO: More documentation
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
543 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
544 bool deleteTranslator(const QString& name);
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
545
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
546 /** Returns the default translator for Konsole. */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
547 const KeyboardTranslator* defaultTranslator();
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
548
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
549 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
550 * Returns the keyboard translator with the given name or 0 if no translator
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
551 * with that name exists.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
552 *
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
553 * The first time that a translator with a particular name is requested,
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
554 * the on-disk .keyboard file is loaded and parsed.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
555 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
556 const KeyboardTranslator* findTranslator(const QString& name);
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
557 /**
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
558 * Returns a list of the names of available keyboard translators.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
559 *
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
560 * The first time this is called, a search for available
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
561 * translators is started.
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
562 */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
563 QList<QString> allTranslators();
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
564
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
565 /** Returns the global KeyboardTranslatorManager instance. */
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
566 static KeyboardTranslatorManager* instance();
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
567
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
568 private:
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
569 static const char* defaultTranslatorText;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
570
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
571 void findTranslators(); // locate the available translators
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
572 KeyboardTranslator* loadTranslator(const QString& name); // loads the translator
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
573 // with the given name
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
574 KeyboardTranslator* loadTranslator(QIODevice* device,const QString& name);
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
575
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
576 bool saveTranslator(const KeyboardTranslator* translator);
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
577 QString findTranslatorPath(const QString& name);
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
578
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
579 QHash<QString,KeyboardTranslator*> _translators; // maps translator-name -> KeyboardTranslator
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
580 // instance
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
581 bool _haveLoadedAll;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
582 };
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
583
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
584 inline int KeyboardTranslator::Entry::keyCode() const { return _keyCode; }
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
585 inline void KeyboardTranslator::Entry::setKeyCode(int keyCode) { _keyCode = keyCode; }
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
586
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
587 inline void KeyboardTranslator::Entry::setModifiers( Qt::KeyboardModifiers modifier )
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
588 {
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
589 _modifiers = modifier;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
590 }
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
591 inline Qt::KeyboardModifiers KeyboardTranslator::Entry::modifiers() const { return _modifiers; }
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
592
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
593 inline void KeyboardTranslator::Entry::setModifierMask( Qt::KeyboardModifiers mask )
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
594 {
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
595 _modifierMask = mask;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
596 }
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
597 inline Qt::KeyboardModifiers KeyboardTranslator::Entry::modifierMask() const { return _modifierMask; }
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
598
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
599 inline bool KeyboardTranslator::Entry::isNull() const
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
600 {
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
601 return ( *this == Entry() );
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
602 }
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
603
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
604 inline void KeyboardTranslator::Entry::setCommand( Command command )
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
605 {
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
606 _command = command;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
607 }
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
608 inline KeyboardTranslator::Command KeyboardTranslator::Entry::command() const { return _command; }
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
609
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
610 inline void KeyboardTranslator::Entry::setText( const QByteArray& text )
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
611 {
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
612 _text = unescape(text);
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
613 }
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
614 inline int oneOrZero(int value)
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
615 {
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
616 return value ? 1 : 0;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
617 }
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
618 inline QByteArray KeyboardTranslator::Entry::text(bool expandWildCards,Qt::KeyboardModifiers modifiers) const
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
619 {
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
620 QByteArray expandedText = _text;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
621
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
622 if (expandWildCards)
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
623 {
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
624 int modifierValue = 1;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
625 modifierValue += oneOrZero(modifiers & Qt::ShiftModifier);
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
626 modifierValue += oneOrZero(modifiers & Qt::AltModifier) << 1;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
627 modifierValue += oneOrZero(modifiers & Qt::ControlModifier) << 2;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
628
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
629 for (int i=0;i<_text.length();i++)
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
630 {
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
631 if (expandedText[i] == '*')
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
632 expandedText[i] = '0' + modifierValue;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
633 }
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
634 }
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
635
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
636 return expandedText;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
637 }
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
638
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
639 inline void KeyboardTranslator::Entry::setState( States state )
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
640 {
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
641 _state = state;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
642 }
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
643 inline KeyboardTranslator::States KeyboardTranslator::Entry::state() const { return _state; }
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
644
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
645 inline void KeyboardTranslator::Entry::setStateMask( States stateMask )
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
646 {
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
647 _stateMask = stateMask;
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
648 }
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
649 inline KeyboardTranslator::States KeyboardTranslator::Entry::stateMask() const { return _stateMask; }
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
650
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
651 }
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
652
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
653 Q_DECLARE_METATYPE(Konsole::KeyboardTranslator::Entry)
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
654 Q_DECLARE_METATYPE(const Konsole::KeyboardTranslator*)
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
655
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
656 #endif // KEYBOARDTRANSLATOR_H
e32ff0a000a8 Removed useless files, renamed files appropriately.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
657