1 /*
2  * DQt - D bindings for the Qt Toolkit
3  *
4  * GNU Lesser General Public License Usage
5  * This file may be used under the terms of the GNU Lesser
6  * General Public License version 3 as published by the Free Software
7  * Foundation and appearing in the file LICENSE.LGPL3 included in the
8  * packaging of this file. Please review the following information to
9  * ensure the GNU Lesser General Public License version 3 requirements
10  * will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
11  */
12 module qt.gui.inputmethod;
13 extern(C++):
14 
15 import qt.config;
16 import qt.core.locale;
17 import qt.core.namespace;
18 import qt.core.object;
19 import qt.core.rect;
20 import qt.core.variant;
21 import qt.gui.transform;
22 import qt.helpers;
23 
24 extern(C++, class) struct QInputMethodPrivate;
25 
26 /// Binding for C++ class [QInputMethod](https://doc.qt.io/qt-6/qinputmethod.html).
27 class /+ Q_GUI_EXPORT +/ QInputMethod : QObject
28 {
29     mixin(Q_OBJECT);
30     /+ Q_DECLARE_PRIVATE(QInputMethod) +/
31     /+ Q_PROPERTY(QRectF cursorRectangle READ cursorRectangle NOTIFY cursorRectangleChanged)
32     Q_PROPERTY(QRectF anchorRectangle READ anchorRectangle NOTIFY anchorRectangleChanged)
33     Q_PROPERTY(QRectF keyboardRectangle READ keyboardRectangle NOTIFY keyboardRectangleChanged)
34     Q_PROPERTY(QRectF inputItemClipRectangle READ inputItemClipRectangle
35                NOTIFY inputItemClipRectangleChanged)
36     Q_PROPERTY(bool visible READ isVisible NOTIFY visibleChanged)
37     Q_PROPERTY(bool animating READ isAnimating NOTIFY animatingChanged)
38     Q_PROPERTY(QLocale locale READ locale NOTIFY localeChanged)
39     Q_PROPERTY(Qt::LayoutDirection inputDirection READ inputDirection NOTIFY inputDirectionChanged) +/
40 
41 public:
42     final QTransform inputItemTransform() const;
43     final void setInputItemTransform(ref const(QTransform) transform);
44 
45     final QRectF inputItemRectangle() const;
46     final void setInputItemRectangle(ref const(QRectF) rect);
47 
48     // in window coordinates
49     final QRectF cursorRectangle() const; // ### what if we have rotations for the item?
50     final QRectF anchorRectangle() const; // ### ditto
51 
52     // keyboard geometry in window coords
53     final QRectF keyboardRectangle() const;
54 
55     final QRectF inputItemClipRectangle() const;
56 
57     enum Action {
58         Click,
59         ContextMenu
60     }
61     /+ Q_ENUM(Action) +/
62 
63     final bool isVisible() const;
64     final void setVisible(bool visible);
65 
66     final bool isAnimating() const;
67 
68     final QLocale locale() const;
69     final /+ Qt:: +/qt.core.namespace.LayoutDirection inputDirection() const;
70 
71     static QVariant queryFocusObject(/+ Qt:: +/qt.core.namespace.InputMethodQuery query, ref const(QVariant) argument);
72 
73 public /+ Q_SLOTS +/:
74     @QSlot final void show();
75     @QSlot final void hide();
76 
77     @QSlot final void update(/+ Qt:: +/qt.core.namespace.InputMethodQueries queries);
78     @QSlot final void reset();
79     @QSlot final void commit();
80 
81     @QSlot final void invokeAction(Action a, int cursorPosition);
82 
83 /+ Q_SIGNALS +/public:
84     @QSignal final void cursorRectangleChanged();
85     @QSignal final void anchorRectangleChanged();
86     @QSignal final void keyboardRectangleChanged();
87     @QSignal final void inputItemClipRectangleChanged();
88     @QSignal final void visibleChanged();
89     @QSignal final void animatingChanged();
90     @QSignal final void localeChanged();
91     @QSignal final void inputDirectionChanged(/+ Qt:: +/qt.core.namespace.LayoutDirection newDirection);
92 
93 private:
94     /+ friend class QGuiApplication; +/
95     /+ friend class QGuiApplicationPrivate; +/
96     /+ friend class QPlatformInputContext; +/
97     this();
98     ~this();
99     mixin(CREATE_CONVENIENCE_WRAPPERS);
100 }
101