summaryrefslogtreecommitdiffstats
path: root/include/vcl/jsdialog/executor.hxx
blob: b60c035d587acd3bcbf2dbd94b8c2092f9613a5f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 */

#pragma once

#include <vcl/dllapi.h>
#include <vcl/uitest/uiobject.hxx>
#include <vcl/weld.hxx>
#include <unordered_map>

class LOKTrigger
{
public:
    static void trigger_changed(weld::TextView& rView) { rView.signal_changed(); }

    static void trigger_changed(weld::Entry& rEdit) { rEdit.signal_changed(); }

    static void trigger_changed(weld::ComboBox& rComboBox) { rComboBox.signal_changed(); }

    static void trigger_changed(weld::TreeView& rTreeView) { rTreeView.signal_changed(); }

    static void trigger_changed(weld::IconView& rIconView) { rIconView.signal_selection_changed(); }

    static void trigger_scrollv(weld::ScrolledWindow& rScrolledWindow)
    {
        rScrolledWindow.signal_vadjustment_changed();
    }

    static void trigger_scrollh(weld::ScrolledWindow& rScrolledWindow)
    {
        rScrolledWindow.signal_hadjustment_changed();
    }

    static void trigger_toggled(weld::Toggleable& rButton) { rButton.signal_toggled(); }

    static void trigger_row_activated(weld::TreeView& rTreeView)
    {
        rTreeView.signal_row_activated();
    }

    static void trigger_item_activated(weld::IconView& rIconView)
    {
        rIconView.signal_item_activated();
    }

    static void trigger_clicked(weld::Toolbar& rToolbar, const OUString& rIdent)
    {
        rToolbar.signal_clicked(rIdent);
    }

    static void trigger_clicked(weld::Button& rButton) { rButton.signal_clicked(); }

    static void trigger_click(weld::DrawingArea& rDrawingArea, const Point& rPos)
    {
        rDrawingArea.click(rPos);
    }

    static void trigger_dblclick(weld::DrawingArea& rDrawingArea, const Point& rPos)
    {
        rDrawingArea.dblclick(rPos);
    }

    static void trigger_mouse_up(weld::DrawingArea& rDrawingArea, const Point& rPos)
    {
        rDrawingArea.mouse_up(rPos);
    }

    static void trigger_mouse_down(weld::DrawingArea& rDrawingArea, const Point& rPos)
    {
        rDrawingArea.mouse_down(rPos);
    }

    static void trigger_mouse_move(weld::DrawingArea& rDrawingArea, const Point& rPos)
    {
        rDrawingArea.mouse_move(rPos);
    }

    static void trigger_selected(weld::MenuButton& rButton, const OUString& rIdent)
    {
        rButton.signal_selected(rIdent);
    }

    static void trigger_selected(weld::Calendar& rCalendar) { rCalendar.signal_selected(); }

    static void trigger_activated(weld::Calendar& rCalendar) { rCalendar.signal_activated(); }

    static void trigger_value_changed(weld::SpinButton& rSpinButton)
    {
        rSpinButton.signal_value_changed();
    }

    static void trigger_value_changed(weld::FormattedSpinButton& rSpinButton)
    {
        rSpinButton.signal_value_changed();
    }

    static void trigger_closed(weld::Popover& rPopover) { rPopover.popdown(); }

    static void trigger_key_press(weld::Widget& rWidget, const KeyEvent& rEvent)
    {
        rWidget.m_aKeyPressHdl.Call(rEvent);
    }

    static void trigger_key_release(weld::Widget& rWidget, const KeyEvent& rEvent)
    {
        rWidget.m_aKeyReleaseHdl.Call(rEvent);
    }

    static void command(weld::DrawingArea& rArea, const CommandEvent& rCmd)
    {
        rArea.m_aCommandHdl.Call(rCmd);
    }

    static void enter_page(weld::Notebook& rNotebook, const OUString& rPage)
    {
        rNotebook.m_aEnterPageHdl.Call(rPage);
    }

    static void leave_page(weld::Notebook& rNotebook, const OUString& rPage)
    {
        rNotebook.m_aLeavePageHdl.Call(rPage);
    }
};

namespace jsdialog
{
// type used to store key-value pairs to put in the generated messages
typedef std::unordered_map<OString, OUString> ActionDataMap;

/// execute action on a widget
VCL_DLLPUBLIC bool ExecuteAction(const OUString& nWindowId, const OUString& rWidget,
                                 StringMap& rData);
/// send full update message to the client
VCL_DLLPUBLIC void SendFullUpdate(const OUString& nWindowId, const OUString& rWidget);
/// send action message to the client
VCL_DLLPUBLIC void SendAction(const OUString& nWindowId, const OUString& rWidget,
                              std::unique_ptr<ActionDataMap> pData);
VCL_DLLPUBLIC StringMap jsonToStringMap(const char* pJSON);
};

/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */