/src/libreoffice/vcl/inc/salvtables.hxx
Line | Count | Source |
1 | | /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */ |
2 | | /* |
3 | | * This file is part of the LibreOffice project. |
4 | | * |
5 | | * This Source Code Form is subject to the terms of the Mozilla Public |
6 | | * License, v. 2.0. If a copy of the MPL was not distributed with this |
7 | | * file, You can obtain one at http://mozilla.org/MPL/2.0/. |
8 | | */ |
9 | | #pragma once |
10 | | |
11 | | #include <vcl/builder.hxx> |
12 | | #include <vcl/weld.hxx> |
13 | | #include <vcl/svapp.hxx> |
14 | | #include <vcl/syswin.hxx> |
15 | | #include <vcl/settings.hxx> |
16 | | #include <vcl/virdev.hxx> |
17 | | #include <vcl/ctrl.hxx> |
18 | | #include <vcl/toolkit/edit.hxx> |
19 | | #include <vcl/formatter.hxx> |
20 | | #include <vcl/toolkit/spinfld.hxx> |
21 | | #include <vcl/toolkit/fixed.hxx> |
22 | | #include <vcl/toolkit/fixedhyper.hxx> |
23 | | #include <vcl/toolkit/lstbox.hxx> |
24 | | #include <vcl/toolkit/MenuButton.hxx> |
25 | | #include <vcl/toolkit/prgsbar.hxx> |
26 | | #include <vcl/toolkit/combobox.hxx> |
27 | | #include <vcl/tabctrl.hxx> |
28 | | #include <vcl/layout.hxx> |
29 | | #include <vcl/toolkit/svtabbx.hxx> |
30 | | #include <vcl/toolkit/svlbitm.hxx> |
31 | | #include <o3tl/sorted_vector.hxx> |
32 | | #include "calendar.hxx" |
33 | | #include "iconview.hxx" |
34 | | #include "messagedialog.hxx" |
35 | | #include "verticaltabctrl.hxx" |
36 | | |
37 | | namespace vcl |
38 | | { |
39 | | class RoadmapWizard; |
40 | | }; |
41 | | |
42 | | class SalInstanceBuilder : public weld::Builder |
43 | | { |
44 | | protected: |
45 | | std::unique_ptr<VclBuilder> m_xBuilder; |
46 | | VclPtr<vcl::Window> m_aOwnedToplevel; |
47 | | |
48 | | public: |
49 | | SalInstanceBuilder(vcl::Window* pParent, std::u16string_view sUIRoot, const OUString& rUIFile, |
50 | | const css::uno::Reference<css::frame::XFrame>& rFrame |
51 | | = css::uno::Reference<css::frame::XFrame>()); |
52 | | |
53 | | virtual std::unique_ptr<weld::MessageDialog> weld_message_dialog(const OUString& id) override; |
54 | | |
55 | | virtual std::unique_ptr<weld::Dialog> weld_dialog(const OUString& id) override; |
56 | | |
57 | | virtual std::unique_ptr<weld::Assistant> weld_assistant(const OUString& id) override; |
58 | | |
59 | | virtual std::unique_ptr<weld::Window> create_screenshot_window() override; |
60 | | |
61 | | virtual std::unique_ptr<weld::Widget> weld_widget(const OUString& id) override; |
62 | | |
63 | | virtual std::unique_ptr<weld::Container> weld_container(const OUString& id) override; |
64 | | |
65 | | virtual std::unique_ptr<weld::Box> weld_box(const OUString& id) override; |
66 | | |
67 | | virtual std::unique_ptr<weld::Grid> weld_grid(const OUString& id) override; |
68 | | |
69 | | virtual std::unique_ptr<weld::Paned> weld_paned(const OUString& id) override; |
70 | | |
71 | | virtual std::unique_ptr<weld::Frame> weld_frame(const OUString& id) override; |
72 | | |
73 | | virtual std::unique_ptr<weld::ScrolledWindow> |
74 | | weld_scrolled_window(const OUString& id, bool bUserManagedScrolling = false) override; |
75 | | |
76 | | virtual std::unique_ptr<weld::Notebook> weld_notebook(const OUString& id) override; |
77 | | |
78 | | virtual std::unique_ptr<weld::Button> weld_button(const OUString& id) override; |
79 | | |
80 | | virtual std::unique_ptr<weld::MenuButton> weld_menu_button(const OUString& id) override; |
81 | | |
82 | | virtual std::unique_ptr<weld::LinkButton> weld_link_button(const OUString& id) override; |
83 | | |
84 | | virtual std::unique_ptr<weld::ToggleButton> weld_toggle_button(const OUString& id) override; |
85 | | |
86 | | virtual std::unique_ptr<weld::RadioButton> weld_radio_button(const OUString& id) override; |
87 | | |
88 | | virtual std::unique_ptr<weld::CheckButton> weld_check_button(const OUString& id) override; |
89 | | |
90 | | virtual std::unique_ptr<weld::Scale> weld_scale(const OUString& id) override; |
91 | | |
92 | | virtual std::unique_ptr<weld::ProgressBar> weld_progress_bar(const OUString& id) override; |
93 | | |
94 | | virtual std::unique_ptr<weld::LevelBar> weld_level_bar(const OUString& id) override; |
95 | | |
96 | | virtual std::unique_ptr<weld::Spinner> weld_spinner(const OUString& id) override; |
97 | | |
98 | | virtual std::unique_ptr<weld::Image> weld_image(const OUString& id) override; |
99 | | |
100 | | virtual std::unique_ptr<weld::Calendar> weld_calendar(const OUString& id) override; |
101 | | |
102 | | virtual std::unique_ptr<weld::Entry> weld_entry(const OUString& id) override; |
103 | | |
104 | | virtual std::unique_ptr<weld::SpinButton> weld_spin_button(const OUString& id) override; |
105 | | |
106 | | virtual std::unique_ptr<weld::MetricSpinButton> |
107 | | weld_metric_spin_button(const OUString& id, FieldUnit eUnit) override; |
108 | | |
109 | | virtual std::unique_ptr<weld::FormattedSpinButton> |
110 | | weld_formatted_spin_button(const OUString& id) override; |
111 | | |
112 | | virtual std::unique_ptr<weld::ComboBox> weld_combo_box(const OUString& id) override; |
113 | | |
114 | | virtual std::unique_ptr<weld::EntryTreeView> |
115 | | weld_entry_tree_view(const OUString& containerid, const OUString& entryid, |
116 | | const OUString& treeviewid) override; |
117 | | |
118 | | virtual std::unique_ptr<weld::TreeView> weld_tree_view(const OUString& id) override; |
119 | | |
120 | | virtual std::unique_ptr<weld::IconView> weld_icon_view(const OUString& id) override; |
121 | | |
122 | | virtual std::unique_ptr<weld::Label> weld_label(const OUString& id) override; |
123 | | |
124 | | virtual std::unique_ptr<weld::TextView> weld_text_view(const OUString& id) override; |
125 | | |
126 | | virtual std::unique_ptr<weld::Expander> weld_expander(const OUString& id) override; |
127 | | |
128 | | virtual std::unique_ptr<weld::DrawingArea> weld_drawing_area( |
129 | | const OUString& id, const rtl::Reference<comphelper::OAccessible>& rA11yImpl = nullptr, |
130 | | FactoryFunction pUITestFactoryFunction = nullptr, void* pUserData = nullptr) override; |
131 | | |
132 | | virtual std::unique_ptr<weld::Menu> weld_menu(const OUString& id) override; |
133 | | |
134 | | virtual std::unique_ptr<weld::Popover> weld_popover(const OUString& id) override; |
135 | | |
136 | | virtual std::unique_ptr<weld::Toolbar> weld_toolbar(const OUString& id) override; |
137 | | |
138 | | virtual std::unique_ptr<weld::Scrollbar> weld_scrollbar(const OUString& id) override; |
139 | | |
140 | | virtual std::unique_ptr<weld::SizeGroup> create_size_group() override; |
141 | | |
142 | | OUString get_current_page_help_id() const; |
143 | | |
144 | | virtual ~SalInstanceBuilder() override; |
145 | | }; |
146 | | |
147 | | class SAL_DLLPUBLIC_RTTI SalInstanceMenu : public weld::Menu |
148 | | { |
149 | | protected: |
150 | | VclPtr<PopupMenu> m_xMenu; |
151 | | |
152 | | private: |
153 | | bool m_bTakeOwnership; |
154 | | sal_uInt16 m_nLastId; |
155 | | |
156 | | DECL_DLLPRIVATE_LINK(SelectMenuHdl, ::Menu*, bool); |
157 | | |
158 | | public: |
159 | | SalInstanceMenu(PopupMenu* pMenu, bool bTakeOwnership); |
160 | | virtual OUString popup_at_rect(weld::Widget* pParent, const tools::Rectangle& rRect, |
161 | | weld::Placement ePlace = weld::Placement::Under) override; |
162 | | virtual void set_sensitive(const OUString& rIdent, bool bSensitive) override; |
163 | | virtual bool get_sensitive(const OUString& rIdent) const override; |
164 | | virtual void set_active(const OUString& rIdent, bool bActive) override; |
165 | | virtual bool get_active(const OUString& rIdent) const override; |
166 | | virtual void set_label(const OUString& rIdent, const OUString& rLabel) override; |
167 | | virtual OUString get_label(const OUString& rIdent) const override; |
168 | | virtual void set_visible(const OUString& rIdent, bool bShow) override; |
169 | | virtual void clear() override; |
170 | | virtual void insert(int pos, const OUString& rId, const OUString& rStr, |
171 | | const OUString* pIconName, VirtualDevice* pImageSurface, |
172 | | const css::uno::Reference<css::graphic::XGraphic>& rImage, |
173 | | TriState eCheckRadioFalse) override; |
174 | | virtual void insert_separator(int pos, const OUString& rId) override; |
175 | | virtual void set_item_help_id(const OUString& rIdent, const OUString& rHelpId) override; |
176 | | virtual void remove(const OUString& rId) override; |
177 | | virtual OUString get_id(int pos) const override; |
178 | | virtual int n_children() const override; |
179 | | PopupMenu* getMenu() const; |
180 | | virtual ~SalInstanceMenu() override; |
181 | | }; |
182 | | |
183 | | class SalFlashAttention; |
184 | | |
185 | | class VCL_DLLPUBLIC SalInstanceWidget : public virtual weld::Widget |
186 | | { |
187 | | protected: |
188 | | VclPtr<vcl::Window> m_xWidget; |
189 | | std::unique_ptr<SalFlashAttention> m_xFlashAttention; |
190 | | SalInstanceBuilder* m_pBuilder; |
191 | | |
192 | | private: |
193 | | DECL_LINK(EventListener, VclWindowEvent&, void); |
194 | | DECL_LINK(KeyEventListener, VclWindowEvent&, bool); |
195 | | DECL_LINK(MouseEventListener, VclWindowEvent&, void); |
196 | | DECL_LINK(SettingsChangedHdl, VclWindowEvent&, void); |
197 | | DECL_LINK(MnemonicActivateHdl, vcl::Window&, bool); |
198 | | |
199 | | static void DoRecursivePaint(vcl::Window* pWindow, const Point& rPos, OutputDevice& rOutput); |
200 | | |
201 | | const bool m_bTakeOwnership; |
202 | | bool m_bEventListener; |
203 | | bool m_bKeyEventListener; |
204 | | bool m_bMouseEventListener; |
205 | | int m_nFreezeCount; |
206 | | |
207 | | protected: |
208 | | void ensure_event_listener(); |
209 | | |
210 | | // we want the ability to mark key events as handled, so use this variant |
211 | | // for those, we get all keystrokes in this case, so we will need to filter |
212 | | // them later |
213 | | void ensure_key_listener(); |
214 | | |
215 | | // we want the ability to know about mouse events that happen in our children |
216 | | // so use this variant, we will need to filter them later |
217 | | void ensure_mouse_listener(); |
218 | | |
219 | 0 | bool IsFirstFreeze() const { return m_nFreezeCount == 0; } |
220 | 0 | bool IsLastThaw() const { return m_nFreezeCount == 1; } |
221 | | |
222 | | virtual void HandleEventListener(VclWindowEvent& rEvent); |
223 | | virtual bool HandleKeyEventListener(VclWindowEvent& rEvent); |
224 | | virtual void HandleMouseEventListener(VclWindowEvent& rEvent); |
225 | | |
226 | | public: |
227 | | SalInstanceWidget(vcl::Window* pWidget, SalInstanceBuilder* pBuilder, bool bTakeOwnership); |
228 | | |
229 | | virtual void set_sensitive(bool sensitive) override; |
230 | | |
231 | | virtual bool get_sensitive() const override; |
232 | | |
233 | | virtual bool get_visible() const override; |
234 | | |
235 | | virtual bool is_visible() const override; |
236 | | |
237 | | virtual void set_can_focus(bool bCanFocus) override; |
238 | | |
239 | | virtual void grab_focus() override; |
240 | | |
241 | | virtual bool has_focus() const override; |
242 | | |
243 | | virtual bool is_active() const override; |
244 | | |
245 | | virtual bool has_child_focus() const override; |
246 | | |
247 | | virtual void show() override; |
248 | | |
249 | | virtual void hide() override; |
250 | | |
251 | | virtual void set_size_request(int nWidth, int nHeight) override; |
252 | | |
253 | | virtual Size get_size_request() const override; |
254 | | |
255 | | virtual Size get_preferred_size() const override; |
256 | | |
257 | | virtual float get_approximate_digit_width() const override; |
258 | | |
259 | | virtual int get_text_height() const override; |
260 | | |
261 | | virtual Size get_pixel_size(const OUString& rText) const override; |
262 | | |
263 | | virtual vcl::Font get_font() override; |
264 | | |
265 | | virtual OUString get_buildable_name() const override; |
266 | | |
267 | | virtual void set_buildable_name(const OUString& rId) override; |
268 | | |
269 | | virtual void set_help_id(const OUString& rId) override; |
270 | | |
271 | | virtual OUString get_help_id() const override; |
272 | | |
273 | | virtual void set_hexpand(bool bExpand) override; |
274 | | |
275 | | virtual bool get_hexpand() const override; |
276 | | |
277 | | virtual void set_vexpand(bool bExpand) override; |
278 | | |
279 | | virtual bool get_vexpand() const override; |
280 | | |
281 | | virtual void set_margin_top(int nMargin) override; |
282 | | |
283 | | virtual void set_margin_bottom(int nMargin) override; |
284 | | |
285 | | virtual void set_margin_start(int nMargin) override; |
286 | | |
287 | | virtual void set_margin_end(int nMargin) override; |
288 | | |
289 | | virtual int get_margin_top() const override; |
290 | | |
291 | | virtual int get_margin_bottom() const override; |
292 | | |
293 | | virtual int get_margin_start() const override; |
294 | | |
295 | | virtual int get_margin_end() const override; |
296 | | |
297 | | virtual void set_accessible_name(const OUString& rName) override; |
298 | | |
299 | | virtual void set_accessible_description(const OUString& rDescription) override; |
300 | | |
301 | | virtual OUString get_accessible_name() const override; |
302 | | |
303 | | virtual OUString get_accessible_description() const override; |
304 | | |
305 | | virtual OUString get_accessible_id() const override; |
306 | | |
307 | | virtual void set_accessible_relation_labeled_by(weld::Widget* pLabel) override; |
308 | | |
309 | | virtual void set_tooltip_text(const OUString& rTip) override; |
310 | | |
311 | | virtual OUString get_tooltip_text() const override; |
312 | | |
313 | | virtual void set_cursor_data(void* pData) override; |
314 | | |
315 | | virtual void connect_focus_in(const Link<Widget&, void>& rLink) override; |
316 | | |
317 | | virtual void connect_mnemonic_activate(const Link<Widget&, bool>& rLink) override; |
318 | | |
319 | | virtual void connect_focus_out(const Link<Widget&, void>& rLink) override; |
320 | | |
321 | | virtual void connect_size_allocate(const Link<const Size&, void>& rLink) override; |
322 | | |
323 | | virtual void connect_mouse_press(const Link<const MouseEvent&, bool>& rLink) override; |
324 | | |
325 | | virtual void connect_mouse_move(const Link<const MouseEvent&, bool>& rLink) override; |
326 | | |
327 | | virtual void connect_mouse_release(const Link<const MouseEvent&, bool>& rLink) override; |
328 | | |
329 | | virtual void connect_key_press(const Link<const KeyEvent&, bool>& rLink) override; |
330 | | |
331 | | virtual void connect_key_release(const Link<const KeyEvent&, bool>& rLink) override; |
332 | | |
333 | | virtual void connect_style_updated(const Link<Widget&, void>& rLink) override; |
334 | | |
335 | | virtual bool get_extents_relative_to(const Widget& rRelative, int& x, int& y, int& width, |
336 | | int& height) const override; |
337 | | |
338 | | virtual void grab_mouse() override; |
339 | | |
340 | | virtual bool has_mouse_grab() const override; |
341 | | |
342 | | virtual void release_mouse() override; |
343 | | |
344 | | virtual bool get_direction() const override; |
345 | | |
346 | | virtual void set_direction(bool bRTL) override; |
347 | | |
348 | | virtual void freeze() override; |
349 | | |
350 | | virtual void thaw() override; |
351 | | |
352 | | virtual void set_busy_cursor(bool bBusy) override; |
353 | | |
354 | | virtual std::unique_ptr<weld::Container> weld_parent() const override; |
355 | | |
356 | | virtual ~SalInstanceWidget() override; |
357 | | |
358 | | vcl::Window* getWidget() const; |
359 | | |
360 | | virtual void queue_resize() override; |
361 | | |
362 | | virtual void help_hierarchy_foreach(const std::function<bool(const OUString&)>& func) override; |
363 | | |
364 | | virtual OUString strip_mnemonic(const OUString& rLabel) const override; |
365 | | virtual OUString escape_ui_str(const OUString& rLabel) const override; |
366 | | |
367 | | virtual VclPtr<VirtualDevice> create_virtual_device() const override; |
368 | | |
369 | | virtual css::uno::Reference<css::datatransfer::dnd::XDropTarget> get_drop_target() override; |
370 | | virtual css::uno::Reference<css::datatransfer::clipboard::XClipboard> |
371 | | get_clipboard() const override; |
372 | | |
373 | | virtual void connect_get_property_tree(const Link<tools::JsonWriter&, void>& rLink) override; |
374 | | |
375 | | virtual void get_property_tree(tools::JsonWriter& rJsonWriter) override; |
376 | | |
377 | | virtual void call_attention_to() override; |
378 | | |
379 | | virtual void set_stack_background() override; |
380 | | |
381 | | virtual void set_title_background() override; |
382 | | |
383 | | virtual void set_toolbar_background() override; |
384 | | |
385 | | virtual void set_highlight_background() override; |
386 | | |
387 | | virtual void set_background(const Color& rColor) override; |
388 | | |
389 | | virtual void set_background() override; |
390 | | |
391 | | virtual void draw(OutputDevice& rOutput, const Point& rPos, const Size& rSizePixel) override; |
392 | | |
393 | | SystemWindow* getSystemWindow(); |
394 | | }; |
395 | | |
396 | | class SalInstanceLabel : public SalInstanceWidget, public virtual weld::Label |
397 | | { |
398 | | private: |
399 | | // Control instead of FixedText so we can also use this for |
400 | | // SelectableFixedText which is derived from Edit. We just typically need |
401 | | // [G|S]etText which exists in their shared baseclass |
402 | | VclPtr<Control> m_xLabel; |
403 | | |
404 | | public: |
405 | | SalInstanceLabel(Control* pLabel, SalInstanceBuilder* pBuilder, bool bTakeOwnership); |
406 | | |
407 | | virtual void set_label(const OUString& rText) override; |
408 | | |
409 | | virtual OUString get_label() const override; |
410 | | |
411 | | virtual void set_mnemonic_widget(Widget* pTarget) override; |
412 | | |
413 | | virtual void set_label_type(weld::LabelType eType) override; |
414 | | |
415 | | virtual void set_font(const vcl::Font& rFont) override; |
416 | | |
417 | | virtual void set_font_color(const Color& rColor) override; |
418 | | }; |
419 | | |
420 | | class SalInstanceContainer : public SalInstanceWidget, public virtual weld::Container |
421 | | { |
422 | | VclPtr<vcl::Window> m_xContainer; |
423 | | |
424 | | public: |
425 | | SalInstanceContainer(vcl::Window* pContainer, SalInstanceBuilder* pBuilder, |
426 | | bool bTakeOwnership); |
427 | | virtual void HandleEventListener(VclWindowEvent& rEvent) override; |
428 | | virtual void connect_container_focus_changed(const Link<Container&, void>& rLink) override; |
429 | | virtual void child_grab_focus() override; |
430 | | virtual void move(weld::Widget* pWidget, weld::Container* pNewParent) override; |
431 | | virtual css::uno::Reference<css::awt::XWindow> CreateChildFrame() override; |
432 | | }; |
433 | | |
434 | | class SalInstanceWindow : public SalInstanceContainer, public virtual weld::Window |
435 | | { |
436 | | private: |
437 | | VclPtr<vcl::Window> m_xWindow; |
438 | | |
439 | | DECL_LINK(HelpHdl, vcl::Window&, bool); |
440 | | |
441 | | void override_child_help(vcl::Window* pParent); |
442 | | |
443 | | void clear_child_help(vcl::Window* pParent); |
444 | | |
445 | | public: |
446 | | SalInstanceWindow(vcl::Window* pWindow, SalInstanceBuilder* pBuilder, bool bTakeOwnership); |
447 | | |
448 | | virtual void set_title(const OUString& rTitle) override; |
449 | | |
450 | | virtual OUString get_title() const override; |
451 | | |
452 | | void help(); |
453 | | |
454 | | virtual css::uno::Reference<css::awt::XWindow> GetXWindow() override; |
455 | | |
456 | | virtual void resize_to_request() override; |
457 | | |
458 | | virtual void window_move(int x, int y) override; |
459 | | |
460 | | virtual Size get_size() const override; |
461 | | |
462 | | virtual Point get_position() const override; |
463 | | |
464 | | virtual AbsoluteScreenPixelRectangle get_monitor_workarea() const override; |
465 | | |
466 | | virtual bool get_resizable() const override; |
467 | | |
468 | | virtual bool has_toplevel_focus() const override; |
469 | | |
470 | | virtual void present() override; |
471 | | |
472 | | virtual void set_window_state(const OUString& rStr) override; |
473 | | |
474 | | virtual OUString get_window_state(vcl::WindowDataMask nMask) const override; |
475 | | |
476 | | virtual SystemEnvData get_system_data() const override; |
477 | | |
478 | | virtual weld::ScreenShotCollection collect_screenshot_data() override; |
479 | | |
480 | | virtual VclPtr<VirtualDevice> screenshot() override; |
481 | | |
482 | | virtual const vcl::ILibreOfficeKitNotifier* GetLOKNotifier() override; |
483 | | |
484 | | virtual ~SalInstanceWindow() override; |
485 | | }; |
486 | | |
487 | | class SalInstanceDialog : public SalInstanceWindow, public virtual weld::Dialog |
488 | | { |
489 | | protected: |
490 | | VclPtr<::Dialog> m_xDialog; |
491 | | |
492 | | private: |
493 | | // for calc ref dialog that shrink to range selection widgets and resize back |
494 | | VclPtr<vcl::Window> m_xRefEdit; |
495 | | std::vector<VclPtr<vcl::Window>> m_aHiddenWidgets; // vector of hidden Controls |
496 | | tools::Long m_nOldEditWidthReq; // Original width request of the input field |
497 | | sal_Int32 m_nOldBorderWidth; // border width for expanded dialog |
498 | | |
499 | | DECL_LINK(PopupScreenShotMenuHdl, const CommandEvent&, bool); |
500 | | |
501 | | void recursively_unset_default_buttons(); |
502 | | |
503 | | void implResetDefault(const vcl::Window* _pWindow); |
504 | | |
505 | | public: |
506 | | SalInstanceDialog(::Dialog* pDialog, SalInstanceBuilder* pBuilder, bool bTakeOwnership); |
507 | | |
508 | | virtual bool runAsync(std::shared_ptr<weld::DialogController> const& rxOwner, |
509 | | const std::function<void(sal_Int32)>& rEndDialogFn) override; |
510 | | |
511 | | virtual bool runAsync(std::shared_ptr<Dialog> const& rxSelf, |
512 | | const std::function<void(sal_Int32)>& rEndDialogFn) override; |
513 | | |
514 | | virtual void collapse(weld::Widget& rEdit, weld::Widget* pButton) override; |
515 | | |
516 | | virtual void undo_collapse() override; |
517 | | |
518 | | virtual void |
519 | | SetInstallLOKNotifierHdl(const Link<void*, vcl::ILibreOfficeKitNotifier*>& rLink) override; |
520 | | |
521 | | virtual int run() override; |
522 | | |
523 | | virtual void response(int nResponse) override; |
524 | | |
525 | | virtual void add_button(const OUString& rText, int nResponse, |
526 | | const OUString& rHelpId = {}) override; |
527 | | |
528 | | virtual void set_modal(bool bModal) override; |
529 | | |
530 | | virtual bool get_modal() const override; |
531 | | |
532 | | virtual void set_centered_on_parent(bool /*bTrackGeometryRequests*/) override; |
533 | | |
534 | | virtual std::unique_ptr<weld::Button> weld_button_for_response(int nResponse) override; |
535 | | |
536 | | virtual void set_default_response(int nResponse) override; |
537 | | |
538 | | virtual std::unique_ptr<weld::Container> weld_content_area() override; |
539 | | |
540 | | virtual void change_default_button(weld::Button* pOld, weld::Button* pNew) override; |
541 | | |
542 | | virtual bool is_default_button(const weld::Button* pCandidate) const override; |
543 | | |
544 | 0 | ::Dialog* getDialog() { return m_xDialog; } |
545 | | }; |
546 | | |
547 | | class SalInstanceAssistant : public SalInstanceDialog, public virtual weld::Assistant |
548 | | { |
549 | | protected: |
550 | | VclPtr<vcl::RoadmapWizard> m_xWizard; |
551 | | |
552 | | private: |
553 | | std::vector<std::unique_ptr<SalInstanceContainer>> m_aPages; |
554 | | std::vector<VclPtr<TabPage>> m_aAddedPages; |
555 | | std::vector<int> m_aIds; |
556 | | std::vector<VclPtr<VclGrid>> m_aAddedGrids; |
557 | | Idle m_aUpdateRoadmapIdle; |
558 | | |
559 | | int find_page(std::u16string_view rIdent) const; |
560 | | int find_id(int nId) const; |
561 | | |
562 | | DECL_LINK(OnRoadmapItemSelected, LinkParamNone*, void); |
563 | | DECL_LINK(UpdateRoadmap_Hdl, Timer*, void); |
564 | | |
565 | | public: |
566 | | SalInstanceAssistant(vcl::RoadmapWizard* pDialog, SalInstanceBuilder* pBuilder, |
567 | | bool bTakeOwnership); |
568 | | virtual int get_current_page() const override; |
569 | | virtual int get_n_pages() const override; |
570 | | virtual OUString get_page_ident(int nPage) const override; |
571 | | virtual OUString get_current_page_ident() const override; |
572 | | virtual void do_set_current_page(int nPage) override; |
573 | | virtual void do_set_current_page(const OUString& rIdent) override; |
574 | | virtual void do_set_page_index(const OUString& rIdent, int nNewIndex) override; |
575 | | virtual weld::Container* append_page(const OUString& rIdent) override; |
576 | | virtual OUString get_page_title(const OUString& rIdent) const override; |
577 | | virtual void do_set_page_title(const OUString& rIdent, const OUString& rTitle) override; |
578 | | virtual void do_set_page_sensitive(const OUString& rIdent, bool bSensitive) override; |
579 | | virtual void set_page_side_help_id(const OUString& rHelpId) override; |
580 | | virtual void set_page_side_image(const OUString& rImage) override; |
581 | | std::unique_ptr<weld::Button> weld_button_for_response(int nResponse) override; |
582 | | |
583 | | virtual ~SalInstanceAssistant() override; |
584 | | }; |
585 | | |
586 | | class WeldTextFilter final : public TextFilter |
587 | | { |
588 | | private: |
589 | | Link<OUString&, bool>& m_rInsertTextHdl; |
590 | | |
591 | | public: |
592 | | WeldTextFilter(Link<OUString&, bool>& rInsertTextHdl); |
593 | | |
594 | | virtual OUString filter(const OUString& rText) override; |
595 | | }; |
596 | | |
597 | | class SalInstanceEntry : public SalInstanceWidget, public virtual weld::Entry |
598 | | { |
599 | | private: |
600 | | VclPtr<::Edit> m_xEntry; |
601 | | |
602 | | DECL_LINK(ChangeHdl, Edit&, void); |
603 | | DECL_LINK(CursorListener, VclWindowEvent&, void); |
604 | | DECL_LINK(ActivateHdl, Edit&, bool); |
605 | | |
606 | | WeldTextFilter m_aTextFilter; |
607 | | |
608 | | public: |
609 | | SalInstanceEntry(::Edit* pEntry, SalInstanceBuilder* pBuilder, bool bTakeOwnership); |
610 | | |
611 | | virtual void do_set_text(const OUString& rText) override; |
612 | | |
613 | | virtual OUString get_text() const override; |
614 | | |
615 | | virtual void set_width_chars(int nChars) override; |
616 | | |
617 | | virtual int get_width_chars() const override; |
618 | | |
619 | | virtual void set_max_length(int nChars) override; |
620 | | |
621 | | virtual void do_select_region(int nStartPos, int nEndPos) override; |
622 | | |
623 | | bool get_selection_bounds(int& rStartPos, int& rEndPos) override; |
624 | | |
625 | | virtual void replace_selection(const OUString& rText) override; |
626 | | |
627 | | virtual void do_set_position(int nCursorPos) override; |
628 | | |
629 | | virtual int get_position() const override; |
630 | | |
631 | | virtual void set_editable(bool bEditable) override; |
632 | | |
633 | | virtual bool get_editable() const override; |
634 | | |
635 | | virtual void set_visibility(bool bVisible) override; |
636 | | |
637 | | virtual void set_overwrite_mode(bool bOn) override; |
638 | | |
639 | | virtual bool get_overwrite_mode() const override; |
640 | | |
641 | | virtual void set_message_type(weld::EntryMessageType eType) override; |
642 | | |
643 | | virtual void set_font(const vcl::Font& rFont) override; |
644 | | |
645 | | virtual void set_font_color(const Color& rColor) override; |
646 | | |
647 | | virtual void connect_cursor_position(const Link<Entry&, void>& rLink) override; |
648 | | |
649 | | virtual void set_placeholder_text(const OUString& rText) override; |
650 | | |
651 | | Edit& getEntry(); |
652 | | |
653 | | void fire_signal_changed(); |
654 | | |
655 | | virtual void cut_clipboard() override; |
656 | | |
657 | | virtual void copy_clipboard() override; |
658 | | |
659 | | virtual void paste_clipboard() override; |
660 | | |
661 | | virtual void set_alignment(TxtAlign eXAlign) override; |
662 | | |
663 | | virtual ~SalInstanceEntry() override; |
664 | | }; |
665 | | |
666 | | class SalInstanceSpinButton : public SalInstanceEntry, public virtual weld::SpinButton |
667 | | { |
668 | | VclPtr<FormattedField> m_xButton; |
669 | | |
670 | | protected: |
671 | | Formatter& m_rFormatter; |
672 | | |
673 | | private: |
674 | | DECL_LINK(UpDownHdl, SpinField&, void); |
675 | | DECL_LINK(LoseFocusHdl, Control&, void); |
676 | | DECL_LINK(OutputHdl, double, std::optional<OUString>); |
677 | | DECL_LINK(InputHdl, const OUString&, Formatter::ParseResult); |
678 | | DECL_LINK(ActivateHdl, Edit&, bool); |
679 | | |
680 | | public: |
681 | | SalInstanceSpinButton(FormattedField* pButton, SalInstanceBuilder* pBuilder, |
682 | | bool bTakeOwnership); |
683 | | |
684 | | virtual double get_floating_point_value() const override; |
685 | | |
686 | | virtual void set_floating_point_value(double fValue) override; |
687 | | |
688 | | virtual void set_floating_point_range(double fMin, double fMax) override; |
689 | | |
690 | | virtual void get_floating_point_range(double& rMin, double& rMax) const override; |
691 | | |
692 | | virtual void set_floating_point_increments(double fStep, double /*fPage*/) override; |
693 | | |
694 | | virtual void get_floating_point_increments(double& rStep, double& rPage) const override; |
695 | | |
696 | | virtual void set_digits(unsigned int digits) override; |
697 | | |
698 | | // SpinButton may be comprised of multiple subwidgets, consider the lot as |
699 | | // one thing for focus |
700 | | virtual bool has_focus() const override; |
701 | | |
702 | | //off by default for direct SpinButtons, MetricSpinButton enables it |
703 | | void SetUseThousandSep(); |
704 | | |
705 | | virtual unsigned int get_digits() const override; |
706 | | |
707 | | virtual ~SalInstanceSpinButton() override; |
708 | | }; |
709 | | |
710 | | //ComboBox and ListBox have similar apis, ComboBoxes in LibreOffice have an edit box and ListBoxes |
711 | | //don't. This distinction isn't there in Gtk. Use a template to sort this problem out. |
712 | | template <class vcl_type> |
713 | | class SalInstanceComboBox : public SalInstanceWidget, public virtual weld::ComboBox |
714 | | { |
715 | | protected: |
716 | | // owner for ListBox/ComboBox UserData |
717 | | std::vector<std::shared_ptr<OUString>> m_aUserData; |
718 | | VclPtr<vcl_type> m_xComboBox; |
719 | | ScopedVclPtr<MenuButton> m_xMenuButton; |
720 | | OUString m_sMenuButtonRow; |
721 | | |
722 | | public: |
723 | | SalInstanceComboBox(vcl_type* pComboBox, SalInstanceBuilder* pBuilder, bool bTakeOwnership) |
724 | 0 | : SalInstanceWidget(pComboBox, pBuilder, bTakeOwnership) |
725 | 0 | , m_xComboBox(pComboBox) |
726 | 0 | { |
727 | 0 | } Unexecuted instantiation: SalInstanceComboBox<ListBox>::SalInstanceComboBox(ListBox*, SalInstanceBuilder*, bool) Unexecuted instantiation: SalInstanceComboBox<ComboBox>::SalInstanceComboBox(ComboBox*, SalInstanceBuilder*, bool) |
728 | | |
729 | | virtual int get_active() const override |
730 | 0 | { |
731 | 0 | const sal_Int32 nRet = m_xComboBox->GetSelectedEntryPos(); |
732 | 0 | if (nRet == LISTBOX_ENTRY_NOTFOUND) |
733 | 0 | return -1; |
734 | 0 | return nRet; |
735 | 0 | } Unexecuted instantiation: SalInstanceComboBox<ListBox>::get_active() const Unexecuted instantiation: SalInstanceComboBox<ComboBox>::get_active() const |
736 | | |
737 | | const OUString* getEntryData(int index) const |
738 | 0 | { |
739 | 0 | return static_cast<const OUString*>(m_xComboBox->GetEntryData(index)); |
740 | 0 | } Unexecuted instantiation: SalInstanceComboBox<ListBox>::getEntryData(int) const Unexecuted instantiation: SalInstanceComboBox<ComboBox>::getEntryData(int) const |
741 | | |
742 | | // ComboBoxes are comprised of multiple subwidgets, consider the lot as |
743 | | // one thing for focus |
744 | | virtual bool has_focus() const override |
745 | 0 | { |
746 | 0 | return m_xWidget->HasChildPathFocus() |
747 | 0 | || (m_xMenuButton && (m_xMenuButton->HasFocus() || m_xMenuButton->InPopupMode())); |
748 | 0 | } Unexecuted instantiation: SalInstanceComboBox<ListBox>::has_focus() const Unexecuted instantiation: SalInstanceComboBox<ComboBox>::has_focus() const |
749 | | |
750 | | virtual OUString get_active_id() const override |
751 | 0 | { |
752 | 0 | sal_Int32 nPos = m_xComboBox->GetSelectedEntryPos(); |
753 | 0 | const OUString* pRet; |
754 | 0 | if (nPos != LISTBOX_ENTRY_NOTFOUND) |
755 | 0 | pRet = getEntryData(m_xComboBox->GetSelectedEntryPos()); |
756 | 0 | else |
757 | 0 | pRet = nullptr; |
758 | 0 | if (!pRet) |
759 | 0 | return OUString(); |
760 | 0 | return *pRet; |
761 | 0 | } Unexecuted instantiation: SalInstanceComboBox<ListBox>::get_active_id() const Unexecuted instantiation: SalInstanceComboBox<ComboBox>::get_active_id() const |
762 | | |
763 | | virtual void set_active_id(const OUString& rStr) override |
764 | 0 | { |
765 | 0 | for (int i = 0; i < get_count(); ++i) |
766 | 0 | { |
767 | 0 | const OUString* pId = getEntryData(i); |
768 | 0 | if (!pId) |
769 | 0 | continue; |
770 | 0 | if (*pId == rStr) |
771 | 0 | m_xComboBox->SelectEntryPos(i); |
772 | 0 | } |
773 | 0 | } Unexecuted instantiation: SalInstanceComboBox<ListBox>::set_active_id(rtl::OUString const&) Unexecuted instantiation: SalInstanceComboBox<ComboBox>::set_active_id(rtl::OUString const&) |
774 | | |
775 | | virtual void set_active(int pos) override |
776 | 0 | { |
777 | 0 | assert(m_xComboBox->IsUpdateMode() |
778 | 0 | && "don't set_active when frozen, set_active after thaw. Note selection doesn't " |
779 | 0 | "survive a " |
780 | 0 | "freeze"); |
781 | 0 | if (pos == -1) |
782 | 0 | { |
783 | 0 | m_xComboBox->SetNoSelection(); |
784 | 0 | return; |
785 | 0 | } |
786 | 0 | m_xComboBox->SelectEntryPos(pos); |
787 | 0 | } Unexecuted instantiation: SalInstanceComboBox<ListBox>::set_active(int) Unexecuted instantiation: SalInstanceComboBox<ComboBox>::set_active(int) |
788 | | |
789 | 0 | virtual OUString get_text(int pos) const override { return m_xComboBox->GetEntry(pos); }Unexecuted instantiation: SalInstanceComboBox<ListBox>::get_text(int) const Unexecuted instantiation: SalInstanceComboBox<ComboBox>::get_text(int) const |
790 | | |
791 | | virtual OUString get_id(int pos) const override |
792 | 0 | { |
793 | 0 | const OUString* pRet = getEntryData(pos); |
794 | 0 | if (!pRet) |
795 | 0 | return OUString(); |
796 | 0 | return *pRet; |
797 | 0 | } Unexecuted instantiation: SalInstanceComboBox<ListBox>::get_id(int) const Unexecuted instantiation: SalInstanceComboBox<ComboBox>::get_id(int) const |
798 | | |
799 | | virtual void set_id(int row, const OUString& rId) override |
800 | 0 | { |
801 | 0 | m_aUserData.emplace_back(std::make_unique<OUString>(rId)); |
802 | 0 | m_xComboBox->SetEntryData(row, m_aUserData.back().get()); |
803 | 0 | } Unexecuted instantiation: SalInstanceComboBox<ListBox>::set_id(int, rtl::OUString const&) Unexecuted instantiation: SalInstanceComboBox<ComboBox>::set_id(int, rtl::OUString const&) |
804 | | |
805 | | virtual void insert_vector(const std::vector<weld::ComboBoxEntry>& rItems, |
806 | | bool bKeepExisting) override |
807 | 0 | { |
808 | 0 | freeze(); |
809 | 0 | if (!bKeepExisting) |
810 | 0 | clear(); |
811 | 0 | for (const auto& rItem : rItems) |
812 | 0 | { |
813 | 0 | insert(-1, rItem.sString, rItem.sId.isEmpty() ? nullptr : &rItem.sId, |
814 | 0 | rItem.sImage.isEmpty() ? nullptr : &rItem.sImage, nullptr); |
815 | 0 | } |
816 | 0 | thaw(); |
817 | 0 | } Unexecuted instantiation: SalInstanceComboBox<ListBox>::insert_vector(std::__1::vector<weld::ComboBoxEntry, std::__1::allocator<weld::ComboBoxEntry> > const&, bool) Unexecuted instantiation: SalInstanceComboBox<ComboBox>::insert_vector(std::__1::vector<weld::ComboBoxEntry, std::__1::allocator<weld::ComboBoxEntry> > const&, bool) |
818 | | |
819 | 0 | virtual int get_count() const override { return m_xComboBox->GetEntryCount(); }Unexecuted instantiation: SalInstanceComboBox<ListBox>::get_count() const Unexecuted instantiation: SalInstanceComboBox<ComboBox>::get_count() const |
820 | | |
821 | | virtual int find_text(const OUString& rStr) const override |
822 | 0 | { |
823 | 0 | const sal_Int32 nRet = m_xComboBox->GetEntryPos(rStr); |
824 | 0 | if (nRet == LISTBOX_ENTRY_NOTFOUND) |
825 | 0 | return -1; |
826 | 0 | return nRet; |
827 | 0 | } Unexecuted instantiation: SalInstanceComboBox<ListBox>::find_text(rtl::OUString const&) const Unexecuted instantiation: SalInstanceComboBox<ComboBox>::find_text(rtl::OUString const&) const |
828 | | |
829 | | virtual int find_id(const OUString& rStr) const override |
830 | 0 | { |
831 | 0 | for (int i = 0; i < get_count(); ++i) |
832 | 0 | { |
833 | 0 | const OUString* pId = getEntryData(i); |
834 | 0 | if (!pId) |
835 | 0 | continue; |
836 | 0 | if (*pId == rStr) |
837 | 0 | return i; |
838 | 0 | } |
839 | 0 | return -1; |
840 | 0 | } Unexecuted instantiation: SalInstanceComboBox<ListBox>::find_id(rtl::OUString const&) const Unexecuted instantiation: SalInstanceComboBox<ComboBox>::find_id(rtl::OUString const&) const |
841 | | |
842 | | virtual void clear() override |
843 | 0 | { |
844 | 0 | m_xComboBox->Clear(); |
845 | 0 | m_aUserData.clear(); |
846 | 0 | } Unexecuted instantiation: SalInstanceComboBox<ListBox>::clear() Unexecuted instantiation: SalInstanceComboBox<ComboBox>::clear() |
847 | | |
848 | | virtual void make_sorted() override |
849 | 0 | { |
850 | 0 | m_xComboBox->SetStyle(m_xComboBox->GetStyle() | WB_SORT); |
851 | 0 | } Unexecuted instantiation: SalInstanceComboBox<ListBox>::make_sorted() Unexecuted instantiation: SalInstanceComboBox<ComboBox>::make_sorted() |
852 | | |
853 | 0 | virtual bool get_popup_shown() const override { return m_xComboBox->IsInDropDown(); }Unexecuted instantiation: SalInstanceComboBox<ListBox>::get_popup_shown() const Unexecuted instantiation: SalInstanceComboBox<ComboBox>::get_popup_shown() const |
854 | | |
855 | | virtual void connect_popup_toggled(const Link<ComboBox&, void>& rLink) override |
856 | 0 | { |
857 | 0 | weld::ComboBox::connect_popup_toggled(rLink); |
858 | 0 | ensure_event_listener(); |
859 | 0 | } Unexecuted instantiation: SalInstanceComboBox<ListBox>::connect_popup_toggled(Link<weld::ComboBox&, void> const&) Unexecuted instantiation: SalInstanceComboBox<ComboBox>::connect_popup_toggled(Link<weld::ComboBox&, void> const&) |
860 | | |
861 | | void call_signal_custom_render(UserDrawEvent* pEvent) |
862 | 0 | { |
863 | 0 | vcl::RenderContext* pRenderContext = pEvent->GetRenderContext(); |
864 | 0 | auto nPos = pEvent->GetItemId(); |
865 | 0 | const tools::Rectangle& rRect = pEvent->GetRect(); |
866 | 0 | const OUString sId = get_id(nPos); |
867 | 0 | signal_custom_render(*pRenderContext, rRect, pEvent->IsSelected(), sId); |
868 | 0 | m_xComboBox->DrawEntry(*pEvent); // draw separator |
869 | |
|
870 | 0 | if (m_xMenuButton && m_xMenuButton->IsVisible() && m_sMenuButtonRow == sId) |
871 | 0 | { |
872 | 0 | vcl::Window* pEventWindow = m_xComboBox->GetMainWindow(); |
873 | 0 | if (m_xMenuButton->GetParent() != pEventWindow) |
874 | 0 | m_xMenuButton->SetParent(pEventWindow); |
875 | 0 | int nButtonWidth = get_menu_button_width(); |
876 | 0 | m_xMenuButton->SetSizePixel(Size(nButtonWidth, rRect.GetHeight())); |
877 | 0 | m_xMenuButton->SetPosPixel(Point(rRect.GetWidth() - nButtonWidth, rRect.Top())); |
878 | 0 | } |
879 | 0 | } |
880 | | |
881 | | virtual void set_item_menu(const OUString& rIdent, weld::Menu* pMenu) override |
882 | 0 | { |
883 | 0 | SalInstanceMenu* pInstanceMenu = dynamic_cast<SalInstanceMenu*>(pMenu); |
884 | |
|
885 | 0 | PopupMenu* pPopup = pInstanceMenu ? pInstanceMenu->getMenu() : nullptr; |
886 | |
|
887 | 0 | if (!m_xMenuButton) |
888 | 0 | m_xMenuButton |
889 | 0 | = VclPtr<MenuButton>::Create(m_xComboBox, WB_FLATBUTTON | WB_NOPOINTERFOCUS); |
890 | |
|
891 | 0 | m_xMenuButton->SetPopupMenu(pPopup, false); |
892 | 0 | m_xMenuButton->Show(pPopup != nullptr); |
893 | 0 | m_sMenuButtonRow = rIdent; |
894 | 0 | } Unexecuted instantiation: SalInstanceComboBox<ListBox>::set_item_menu(rtl::OUString const&, weld::Menu*) Unexecuted instantiation: SalInstanceComboBox<ComboBox>::set_item_menu(rtl::OUString const&, weld::Menu*) |
895 | | |
896 | | int get_menu_button_width() const override |
897 | 0 | { |
898 | 0 | OutputDevice* pDefault = Application::GetDefaultDevice(); |
899 | 0 | return 20 * (pDefault ? pDefault->GetDPIScaleFactor() : 1.0); |
900 | 0 | } Unexecuted instantiation: SalInstanceComboBox<ListBox>::get_menu_button_width() const Unexecuted instantiation: SalInstanceComboBox<ComboBox>::get_menu_button_width() const |
901 | | |
902 | 0 | void set_max_drop_down_rows(int nRows) override { m_xComboBox->SetDropDownLineCount(nRows); }Unexecuted instantiation: SalInstanceComboBox<ListBox>::set_max_drop_down_rows(int) Unexecuted instantiation: SalInstanceComboBox<ComboBox>::set_max_drop_down_rows(int) |
903 | | |
904 | | void CallHandleEventListener(VclWindowEvent& rEvent) |
905 | 0 | { |
906 | 0 | if (rEvent.GetId() == VclEventId::DropdownPreOpen |
907 | 0 | || rEvent.GetId() == VclEventId::DropdownClose) |
908 | 0 | { |
909 | 0 | signal_popup_toggled(); |
910 | 0 | return; |
911 | 0 | } |
912 | 0 | SalInstanceWidget::HandleEventListener(rEvent); |
913 | 0 | } Unexecuted instantiation: SalInstanceComboBox<ListBox>::CallHandleEventListener(VclWindowEvent&) Unexecuted instantiation: SalInstanceComboBox<ComboBox>::CallHandleEventListener(VclWindowEvent&) |
914 | | }; |
915 | | |
916 | | class SalInstanceComboBoxWithoutEdit : public SalInstanceComboBox<ListBox> |
917 | | { |
918 | | private: |
919 | | DECL_LINK(SelectHdl, ListBox&, void); |
920 | | |
921 | | public: |
922 | | SalInstanceComboBoxWithoutEdit(ListBox* pListBox, SalInstanceBuilder* pBuilder, |
923 | | bool bTakeOwnership); |
924 | | |
925 | | virtual OUString get_active_text() const override; |
926 | | |
927 | | virtual void remove(int pos) override; |
928 | | |
929 | | virtual void insert(int pos, const OUString& rStr, const OUString* pId, |
930 | | const OUString* pIconName, VirtualDevice* pImageSurface) override; |
931 | | |
932 | | virtual void insert_separator(int pos, const OUString& /*rId*/) override; |
933 | | |
934 | | virtual bool has_entry() const override; |
935 | | |
936 | | virtual bool changed_by_direct_pick() const override; |
937 | | |
938 | | virtual void set_entry_message_type(weld::EntryMessageType /*eType*/) override; |
939 | | |
940 | | virtual void set_entry_text(const OUString& /*rText*/) override; |
941 | | |
942 | | virtual void select_entry_region(int /*nStartPos*/, int /*nEndPos*/) override; |
943 | | |
944 | | virtual bool get_entry_selection_bounds(int& /*rStartPos*/, int& /*rEndPos*/) override; |
945 | | |
946 | | virtual void set_entry_width_chars(int /*nChars*/) override; |
947 | | |
948 | | virtual void set_entry_max_length(int /*nChars*/) override; |
949 | | |
950 | | virtual void set_entry_completion(bool, bool bCaseSensitive = false) override; |
951 | | |
952 | | virtual void set_entry_placeholder_text(const OUString&) override; |
953 | | |
954 | | virtual void set_entry_editable(bool bEditable) override; |
955 | | |
956 | | virtual void cut_entry_clipboard() override; |
957 | | |
958 | | virtual void copy_entry_clipboard() override; |
959 | | |
960 | | virtual void paste_entry_clipboard() override; |
961 | | |
962 | | virtual void set_font(const vcl::Font& rFont) override; |
963 | | |
964 | | virtual void set_entry_font(const vcl::Font&) override; |
965 | | |
966 | | virtual vcl::Font get_entry_font() override; |
967 | | |
968 | | virtual void set_custom_renderer(bool bOn) override; |
969 | | |
970 | | virtual int get_max_mru_count() const override; |
971 | | |
972 | | virtual void set_max_mru_count(int) override; |
973 | | |
974 | | virtual OUString get_mru_entries() const override; |
975 | | |
976 | | virtual void set_mru_entries(const OUString&) override; |
977 | | |
978 | | virtual void HandleEventListener(VclWindowEvent& rEvent) override; |
979 | | |
980 | | virtual ~SalInstanceComboBoxWithoutEdit() override; |
981 | | }; |
982 | | |
983 | | class SalInstanceComboBoxWithEdit : public SalInstanceComboBox<ComboBox> |
984 | | { |
985 | | private: |
986 | | DECL_LINK(ChangeHdl, Edit&, void); |
987 | | DECL_LINK(EntryActivateHdl, Edit&, bool); |
988 | | DECL_LINK(SelectHdl, ::ComboBox&, void); |
989 | | DECL_LINK(UserDrawHdl, UserDrawEvent*, void); |
990 | | WeldTextFilter m_aTextFilter; |
991 | | bool m_bInSelect; |
992 | | |
993 | | public: |
994 | | SalInstanceComboBoxWithEdit(::ComboBox* pComboBox, SalInstanceBuilder* pBuilder, |
995 | | bool bTakeOwnership); |
996 | | |
997 | | virtual bool has_entry() const override; |
998 | | |
999 | | virtual bool changed_by_direct_pick() const override; |
1000 | | |
1001 | | virtual void set_entry_message_type(weld::EntryMessageType eType) override; |
1002 | | |
1003 | | virtual OUString get_active_text() const override; |
1004 | | |
1005 | | virtual void remove(int pos) override; |
1006 | | |
1007 | | virtual void insert(int pos, const OUString& rStr, const OUString* pId, |
1008 | | const OUString* pIconName, VirtualDevice* pImageSurface) override; |
1009 | | |
1010 | | virtual void insert_separator(int pos, const OUString& /*rId*/) override; |
1011 | | |
1012 | | virtual void set_entry_text(const OUString& rText) override; |
1013 | | |
1014 | | virtual void set_entry_width_chars(int nChars) override; |
1015 | | |
1016 | | virtual void set_entry_max_length(int nChars) override; |
1017 | | |
1018 | | virtual void set_entry_completion(bool bEnable, bool bCaseSensitive = false) override; |
1019 | | |
1020 | | virtual void set_entry_placeholder_text(const OUString& rText) override; |
1021 | | |
1022 | | virtual void set_entry_editable(bool bEditable) override; |
1023 | | |
1024 | | virtual void cut_entry_clipboard() override; |
1025 | | |
1026 | | virtual void copy_entry_clipboard() override; |
1027 | | |
1028 | | virtual void paste_entry_clipboard() override; |
1029 | | |
1030 | | virtual void select_entry_region(int nStartPos, int nEndPos) override; |
1031 | | |
1032 | | virtual bool get_entry_selection_bounds(int& rStartPos, int& rEndPos) override; |
1033 | | |
1034 | | virtual void set_font(const vcl::Font& rFont) override; |
1035 | | |
1036 | | virtual void set_entry_font(const vcl::Font& rFont) override; |
1037 | | |
1038 | | virtual vcl::Font get_entry_font() override; |
1039 | | |
1040 | | virtual void set_custom_renderer(bool bOn) override; |
1041 | | |
1042 | | virtual int get_max_mru_count() const override; |
1043 | | |
1044 | | virtual void set_max_mru_count(int nCount) override; |
1045 | | |
1046 | | virtual OUString get_mru_entries() const override; |
1047 | | |
1048 | | virtual void set_mru_entries(const OUString& rEntries) override; |
1049 | | |
1050 | | virtual void HandleEventListener(VclWindowEvent& rEvent) override; |
1051 | | |
1052 | | virtual void call_attention_to() override; |
1053 | | |
1054 | | virtual ~SalInstanceComboBoxWithEdit() override; |
1055 | | }; |
1056 | | |
1057 | | class SalInstanceButton : public SalInstanceWidget, public virtual weld::Button |
1058 | | { |
1059 | | private: |
1060 | | VclPtr<::Button> m_xButton; |
1061 | | Link<::Button*, void> const m_aOldClickHdl; |
1062 | | |
1063 | | DECL_LINK(ClickHdl, ::Button*, void); |
1064 | | |
1065 | | public: |
1066 | | SalInstanceButton(::Button* pButton, SalInstanceBuilder* pBuilder, bool bTakeOwnership); |
1067 | | |
1068 | | virtual void set_label(const OUString& rText) override; |
1069 | | |
1070 | | virtual void set_image(VirtualDevice* pDevice) override; |
1071 | | |
1072 | | virtual void set_image(const css::uno::Reference<css::graphic::XGraphic>& rImage) override; |
1073 | | |
1074 | | virtual void set_from_icon_name(const OUString& rIconName) override; |
1075 | | |
1076 | | virtual OUString get_label() const override; |
1077 | | |
1078 | | virtual void set_font(const vcl::Font& rFont) override; |
1079 | | |
1080 | | virtual void set_custom_button(VirtualDevice* pDevice) override; |
1081 | | |
1082 | | virtual ~SalInstanceButton() override; |
1083 | | }; |
1084 | | |
1085 | | class SalInstanceToggleButton : public SalInstanceButton, public virtual weld::ToggleButton |
1086 | | { |
1087 | | private: |
1088 | | VclPtr<PushButton> m_xToggleButton; |
1089 | | |
1090 | | DECL_LINK(ToggleListener, VclWindowEvent&, void); |
1091 | | |
1092 | | public: |
1093 | | SalInstanceToggleButton(PushButton* pButton, SalInstanceBuilder* pBuilder, bool bTakeOwnership) |
1094 | 0 | : SalInstanceButton(pButton, pBuilder, bTakeOwnership) |
1095 | 0 | , m_xToggleButton(pButton) |
1096 | 0 | { |
1097 | 0 | m_xToggleButton->setToggleButton(true); |
1098 | 0 | } Unexecuted instantiation: SalInstanceToggleButton::SalInstanceToggleButton(PushButton*, SalInstanceBuilder*, bool) Unexecuted instantiation: SalInstanceToggleButton::SalInstanceToggleButton(PushButton*, SalInstanceBuilder*, bool) |
1099 | | |
1100 | | virtual void connect_toggled(const Link<Toggleable&, void>& rLink) override |
1101 | 0 | { |
1102 | 0 | assert(!m_aToggleHdl.IsSet()); |
1103 | 0 | m_xToggleButton->AddEventListener(LINK(this, SalInstanceToggleButton, ToggleListener)); |
1104 | 0 | weld::ToggleButton::connect_toggled(rLink); |
1105 | 0 | } |
1106 | | |
1107 | 0 | virtual void do_set_active(bool active) override { m_xToggleButton->Check(active); } |
1108 | | |
1109 | 0 | virtual bool get_active() const override { return m_xToggleButton->IsChecked(); } |
1110 | | |
1111 | | virtual ~SalInstanceToggleButton() override |
1112 | 0 | { |
1113 | 0 | if (m_aToggleHdl.IsSet()) |
1114 | 0 | m_xToggleButton->RemoveEventListener( |
1115 | 0 | LINK(this, SalInstanceToggleButton, ToggleListener)); |
1116 | 0 | } |
1117 | | }; |
1118 | | |
1119 | | class SalInstanceNotebook : public SalInstanceWidget, public virtual weld::Notebook |
1120 | | { |
1121 | | private: |
1122 | | VclPtr<TabControl> m_xNotebook; |
1123 | | /// Constructed on-demand. |
1124 | | mutable std::map<OUString, std::shared_ptr<SalInstanceContainer>> m_aPages; |
1125 | | std::map<OUString, std::pair<VclPtr<TabPage>, VclPtr<VclGrid>>> m_aAddedPages; |
1126 | | |
1127 | | DECL_LINK(DeactivatePageHdl, TabControl*, bool); |
1128 | | DECL_LINK(ActivatePageHdl, TabControl*, void); |
1129 | | |
1130 | | public: |
1131 | | SalInstanceNotebook(TabControl* pNotebook, SalInstanceBuilder* pBuilder, bool bTakeOwnership); |
1132 | | |
1133 | | virtual int get_current_page() const override; |
1134 | | |
1135 | | virtual int get_page_index(const OUString& rIdent) const override; |
1136 | | |
1137 | | virtual OUString get_page_ident(int nPage) const override; |
1138 | | |
1139 | | virtual OUString get_current_page_ident() const override; |
1140 | | |
1141 | | virtual weld::Container* get_page(const OUString& rIdent) const override; |
1142 | | |
1143 | | virtual void set_current_page(int nPage) override; |
1144 | | |
1145 | | virtual void set_current_page(const OUString& rIdent) override; |
1146 | | |
1147 | | virtual void remove_page(const OUString& rIdent) override; |
1148 | | |
1149 | | virtual void insert_page(const OUString& rIdent, const OUString& rLabel, int nPos, |
1150 | | const OUString* pIconName = nullptr) override; |
1151 | | |
1152 | | virtual int get_n_pages() const override; |
1153 | | |
1154 | | virtual OUString get_tab_label_text(const OUString& rIdent) const override; |
1155 | | |
1156 | | virtual void set_tab_label_text(const OUString& rIdent, const OUString& rText) override; |
1157 | | |
1158 | | virtual void set_show_tabs(bool bShow) override; |
1159 | | |
1160 | | virtual ~SalInstanceNotebook() override; |
1161 | | }; |
1162 | | |
1163 | | class SalInstanceMessageDialog : public SalInstanceDialog, public virtual weld::MessageDialog |
1164 | | { |
1165 | | protected: |
1166 | | VclPtr<::MessageDialog> m_xMessageDialog; |
1167 | | |
1168 | | public: |
1169 | | SalInstanceMessageDialog(::MessageDialog* pDialog, SalInstanceBuilder* pBuilder, |
1170 | | bool bTakeOwnership); |
1171 | | |
1172 | | virtual void set_primary_text(const OUString& rText) override; |
1173 | | |
1174 | | virtual OUString get_primary_text() const override; |
1175 | | |
1176 | | virtual void set_secondary_text(const OUString& rText) override; |
1177 | | |
1178 | | virtual OUString get_secondary_text() const override; |
1179 | | |
1180 | | virtual std::unique_ptr<weld::Container> weld_message_area() override; |
1181 | | }; |
1182 | | |
1183 | | class SalInstanceLinkButton : public SalInstanceWidget, public virtual weld::LinkButton |
1184 | | { |
1185 | | private: |
1186 | | VclPtr<FixedHyperlink> m_xButton; |
1187 | | Link<FixedHyperlink&, void> m_aOrigClickHdl; |
1188 | | |
1189 | | DECL_LINK(ClickHdl, FixedHyperlink&, void); |
1190 | | |
1191 | | public: |
1192 | | SalInstanceLinkButton(FixedHyperlink* pButton, SalInstanceBuilder* pBuilder, |
1193 | | bool bTakeOwnership) |
1194 | 0 | : SalInstanceWidget(pButton, pBuilder, bTakeOwnership) |
1195 | 0 | , m_xButton(pButton) |
1196 | 0 | { |
1197 | 0 | m_aOrigClickHdl = m_xButton->GetClickHdl(); |
1198 | 0 | m_xButton->SetClickHdl(LINK(this, SalInstanceLinkButton, ClickHdl)); |
1199 | 0 | } Unexecuted instantiation: SalInstanceLinkButton::SalInstanceLinkButton(FixedHyperlink*, SalInstanceBuilder*, bool) Unexecuted instantiation: SalInstanceLinkButton::SalInstanceLinkButton(FixedHyperlink*, SalInstanceBuilder*, bool) |
1200 | | |
1201 | 0 | virtual void set_label(const OUString& rText) override { m_xButton->SetText(rText); } |
1202 | | |
1203 | 0 | virtual OUString get_label() const override { return m_xButton->GetText(); } |
1204 | | |
1205 | 0 | virtual void set_uri(const OUString& rUri) override { m_xButton->SetURL(rUri); } |
1206 | | |
1207 | 0 | virtual OUString get_uri() const override { return m_xButton->GetURL(); } |
1208 | | |
1209 | | virtual void set_label_wrap(bool wrap) override; |
1210 | | |
1211 | 0 | virtual ~SalInstanceLinkButton() override { m_xButton->SetClickHdl(m_aOrigClickHdl); } |
1212 | | }; |
1213 | | |
1214 | | class SalInstanceCheckButton : public SalInstanceButton, public virtual weld::CheckButton |
1215 | | { |
1216 | | private: |
1217 | | VclPtr<CheckBox> m_xCheckButton; |
1218 | | |
1219 | | DECL_LINK(ToggleHdl, CheckBox&, void); |
1220 | | |
1221 | | public: |
1222 | | SalInstanceCheckButton(CheckBox* pButton, SalInstanceBuilder* pBuilder, bool bTakeOwnership); |
1223 | | |
1224 | | virtual void do_set_state(TriState eState) override; |
1225 | | |
1226 | | virtual TriState get_state() const override; |
1227 | | |
1228 | 0 | virtual void set_label(const OUString& rText) override { SalInstanceButton::set_label(rText); } |
1229 | | |
1230 | 0 | virtual OUString get_label() const override { return SalInstanceButton::get_label(); } |
1231 | | |
1232 | | virtual void set_label_wrap(bool wrap) override; |
1233 | | |
1234 | | virtual ~SalInstanceCheckButton() override; |
1235 | | }; |
1236 | | |
1237 | | class SalInstanceDrawingArea : public SalInstanceWidget, public virtual weld::DrawingArea |
1238 | | { |
1239 | | private: |
1240 | | VclPtr<VclDrawingArea> m_xDrawingArea; |
1241 | | |
1242 | | typedef std::pair<vcl::RenderContext&, const tools::Rectangle&> target_and_area; |
1243 | | DECL_LINK(PaintHdl, target_and_area, void); |
1244 | | DECL_LINK(ResizeHdl, const Size&, void); |
1245 | | DECL_LINK(MousePressHdl, const MouseEvent&, bool); |
1246 | | DECL_LINK(MouseMoveHdl, const MouseEvent&, bool); |
1247 | | DECL_LINK(MouseReleaseHdl, const MouseEvent&, bool); |
1248 | | DECL_LINK(KeyPressHdl, const KeyEvent&, bool); |
1249 | | DECL_LINK(KeyReleaseHdl, const KeyEvent&, bool); |
1250 | | DECL_LINK(StyleUpdatedHdl, VclDrawingArea&, void); |
1251 | | DECL_LINK(CommandHdl, const CommandEvent&, bool); |
1252 | | DECL_LINK(QueryTooltipHdl, tools::Rectangle&, OUString); |
1253 | | DECL_LINK(GetSurroundingHdl, OUString&, int); |
1254 | | DECL_LINK(DeleteSurroundingHdl, const Selection&, bool); |
1255 | | DECL_LINK(StartDragHdl, VclDrawingArea*, bool); |
1256 | | |
1257 | | // SalInstanceWidget has a generic listener for all these |
1258 | | // events, ignore the ones we have specializations for |
1259 | | // in VclDrawingArea |
1260 | | virtual void HandleEventListener(VclWindowEvent& rEvent) override; |
1261 | | |
1262 | | virtual void HandleMouseEventListener(VclWindowEvent& rEvent) override; |
1263 | | |
1264 | | virtual bool HandleKeyEventListener(VclWindowEvent& /*rEvent*/) override; |
1265 | | |
1266 | | public: |
1267 | | SalInstanceDrawingArea(VclDrawingArea* pDrawingArea, SalInstanceBuilder* pBuilder, |
1268 | | const rtl::Reference<comphelper::OAccessible>& rAlly, |
1269 | | FactoryFunction pUITestFactoryFunction, void* pUserData, |
1270 | | bool bTakeOwnership); |
1271 | | |
1272 | | virtual void queue_draw() override; |
1273 | | |
1274 | | virtual void queue_draw_area(int x, int y, int width, int height) override; |
1275 | | |
1276 | | virtual void connect_size_allocate(const Link<const Size&, void>& rLink) override; |
1277 | | |
1278 | | virtual void connect_key_press(const Link<const KeyEvent&, bool>& rLink) override; |
1279 | | |
1280 | | virtual void connect_key_release(const Link<const KeyEvent&, bool>& rLink) override; |
1281 | | |
1282 | | virtual void connect_style_updated(const Link<Widget&, void>& rLink) override; |
1283 | | |
1284 | | virtual void set_cursor(PointerStyle ePointerStyle) override; |
1285 | | |
1286 | | virtual Point get_pointer_position() const override; |
1287 | | |
1288 | | virtual void set_input_context(const InputContext& rInputContext) override; |
1289 | | |
1290 | | virtual void im_context_set_cursor_location(const tools::Rectangle& rCursorRect, |
1291 | | int nExtTextInputWidth) override; |
1292 | | |
1293 | | virtual rtl::Reference<comphelper::OAccessible> get_accessible_parent() override; |
1294 | | |
1295 | | virtual a11yrelationset get_accessible_relation_set() override; |
1296 | | |
1297 | | virtual AbsoluteScreenPixelPoint get_accessible_location_on_screen() override; |
1298 | | |
1299 | | virtual void enable_drag_source(rtl::Reference<TransferDataContainer>& rHelper, |
1300 | | sal_uInt8 eDNDConstants) override; |
1301 | | |
1302 | | virtual ~SalInstanceDrawingArea() override; |
1303 | | |
1304 | | virtual OutputDevice& get_ref_device() override; |
1305 | | |
1306 | | virtual void click(const Point& rPos) override; |
1307 | | |
1308 | | virtual void dblclick(const Point& rPos) override; |
1309 | | |
1310 | | virtual void mouse_up(const Point& rPos) override; |
1311 | | |
1312 | | virtual void mouse_down(const Point& rPos) override; |
1313 | | |
1314 | | virtual void mouse_move(const Point& rPos) override; |
1315 | | }; |
1316 | | |
1317 | | class SalInstanceToolbar : public SalInstanceWidget, public virtual weld::Toolbar |
1318 | | { |
1319 | | protected: |
1320 | | VclPtr<ToolBox> m_xToolBox; |
1321 | | std::map<ToolBoxItemId, VclPtr<vcl::Window>> m_aFloats; |
1322 | | std::map<ToolBoxItemId, VclPtr<PopupMenu>> m_aMenus; |
1323 | | |
1324 | | OUString m_sStartShowIdent; |
1325 | | |
1326 | | DECL_LINK(ClickHdl, ToolBox*, void); |
1327 | | DECL_LINK(DropdownClick, ToolBox*, void); |
1328 | | DECL_LINK(MenuToggleListener, VclWindowEvent&, void); |
1329 | | |
1330 | | public: |
1331 | | SalInstanceToolbar(ToolBox* pToolBox, SalInstanceBuilder* pBuilder, bool bTakeOwnership); |
1332 | | |
1333 | | virtual void set_item_sensitive(const OUString& rIdent, bool bSensitive) override; |
1334 | | |
1335 | | virtual bool get_item_sensitive(const OUString& rIdent) const override; |
1336 | | |
1337 | | virtual void set_item_visible(const OUString& rIdent, bool bVisible) override; |
1338 | | |
1339 | | virtual void set_item_help_id(const OUString& rIdent, const OUString& rHelpId) override; |
1340 | | |
1341 | | virtual bool get_item_visible(const OUString& rIdent) const override; |
1342 | | |
1343 | | virtual void set_item_active(const OUString& rIdent, bool bActive) override; |
1344 | | |
1345 | | virtual bool get_item_active(const OUString& rIdent) const override; |
1346 | | |
1347 | | void set_menu_item_active(const OUString& rIdent, bool bActive) override; |
1348 | | |
1349 | | bool get_menu_item_active(const OUString& rIdent) const override; |
1350 | | |
1351 | | virtual void set_item_popover(const OUString& rIdent, weld::Widget* pPopover) override; |
1352 | | |
1353 | | virtual void set_item_menu(const OUString& rIdent, weld::Menu* pMenu) override; |
1354 | | |
1355 | | virtual void insert_item(int pos, const OUString& rId) override; |
1356 | | |
1357 | | virtual void insert_separator(int pos, const OUString& /*rId*/) override; |
1358 | | |
1359 | | virtual int get_n_items() const override; |
1360 | | |
1361 | | virtual OUString get_item_ident(int nIndex) const override; |
1362 | | |
1363 | | virtual void set_item_ident(int nIndex, const OUString& rIdent) override; |
1364 | | |
1365 | | virtual void set_item_label(int nIndex, const OUString& rLabel) override; |
1366 | | |
1367 | | virtual OUString get_item_label(const OUString& rIdent) const override; |
1368 | | |
1369 | | virtual void set_item_label(const OUString& rIdent, const OUString& rLabel) override; |
1370 | | |
1371 | | virtual void set_item_icon_name(const OUString& rIdent, const OUString& rIconName) override; |
1372 | | |
1373 | | virtual void set_item_image_mirrored(const OUString& rIdent, bool bMirrored) override; |
1374 | | |
1375 | | virtual void set_item_image(const OUString& rIdent, |
1376 | | const css::uno::Reference<css::graphic::XGraphic>& rIcon) override; |
1377 | | |
1378 | | virtual void set_item_image(const OUString& rIdent, VirtualDevice* pDevice) override; |
1379 | | |
1380 | | virtual void set_item_image(int nIndex, |
1381 | | const css::uno::Reference<css::graphic::XGraphic>& rIcon) override; |
1382 | | |
1383 | | virtual void set_item_tooltip_text(int nIndex, const OUString& rTip) override; |
1384 | | |
1385 | | virtual void set_item_tooltip_text(const OUString& rIdent, const OUString& rTip) override; |
1386 | | |
1387 | | virtual void set_item_accessible_name(int nIndex, const OUString& rName) override; |
1388 | | |
1389 | | virtual void set_item_accessible_name(const OUString& rIdent, const OUString& rName) override; |
1390 | | |
1391 | | virtual OUString get_item_tooltip_text(const OUString& rIdent) const override; |
1392 | | |
1393 | | virtual vcl::ImageType get_icon_size() const override; |
1394 | | |
1395 | | virtual void set_icon_size(vcl::ImageType eType) override; |
1396 | | |
1397 | | virtual sal_uInt16 get_modifier_state() const override; |
1398 | | |
1399 | | virtual int get_drop_index(const Point& rPoint) const override; |
1400 | | |
1401 | | virtual ~SalInstanceToolbar() override; |
1402 | | }; |
1403 | | |
1404 | | class SalInstanceTextView : public SalInstanceWidget, public virtual weld::TextView |
1405 | | { |
1406 | | private: |
1407 | | VclPtr<VclMultiLineEdit> m_xTextView; |
1408 | | Link<ScrollBar*, void> m_aOrigVScrollHdl; |
1409 | | |
1410 | | DECL_LINK(ChangeHdl, Edit&, void); |
1411 | | DECL_LINK(VscrollHdl, ScrollBar*, void); |
1412 | | DECL_LINK(CursorListener, VclWindowEvent&, void); |
1413 | | |
1414 | | public: |
1415 | | SalInstanceTextView(VclMultiLineEdit* pTextView, SalInstanceBuilder* pBuilder, |
1416 | | bool bTakeOwnership); |
1417 | | |
1418 | | virtual void do_set_text(const OUString& rText) override; |
1419 | | |
1420 | | virtual void do_replace_selection(const OUString& rText) override; |
1421 | | |
1422 | | virtual OUString get_text() const override; |
1423 | | |
1424 | | bool get_selection_bounds(int& rStartPos, int& rEndPos) override; |
1425 | | |
1426 | | virtual void do_select_region(int nStartPos, int nEndPos) override; |
1427 | | |
1428 | | virtual void set_editable(bool bEditable) override; |
1429 | | virtual bool get_editable() const override; |
1430 | | virtual void set_max_length(int nChars) override; |
1431 | | |
1432 | | virtual void set_monospace(bool bMonospace) override; |
1433 | | |
1434 | | virtual void set_font(const vcl::Font& rFont) override; |
1435 | | |
1436 | | virtual void set_font_color(const Color& rColor) override; |
1437 | | |
1438 | | virtual void connect_cursor_position(const Link<TextView&, void>& rLink) override; |
1439 | | |
1440 | | virtual bool can_move_cursor_with_up() const override; |
1441 | | |
1442 | | virtual bool can_move_cursor_with_down() const override; |
1443 | | |
1444 | | virtual void cut_clipboard() override; |
1445 | | |
1446 | | virtual void copy_clipboard() override; |
1447 | | |
1448 | | virtual void paste_clipboard() override; |
1449 | | |
1450 | | virtual void set_alignment(TxtAlign eXAlign) override; |
1451 | | |
1452 | | virtual int vadjustment_get_value() const override; |
1453 | | |
1454 | | virtual void vadjustment_set_value(int value) override; |
1455 | | |
1456 | | virtual int vadjustment_get_upper() const override; |
1457 | | |
1458 | | virtual int vadjustment_get_page_size() const override; |
1459 | | |
1460 | | virtual bool has_focus() const override; |
1461 | | |
1462 | | virtual ~SalInstanceTextView() override; |
1463 | | }; |
1464 | | |
1465 | | struct SalInstanceTreeIter final : public weld::TreeIter |
1466 | | { |
1467 | | SalInstanceTreeIter(const SalInstanceTreeIter* pOrig) |
1468 | 0 | : iter(pOrig ? pOrig->iter : nullptr) |
1469 | 0 | { |
1470 | 0 | } |
1471 | | SalInstanceTreeIter(SvTreeListEntry* pIter) |
1472 | 0 | : iter(pIter) |
1473 | 0 | { |
1474 | 0 | } |
1475 | | virtual bool equal(const TreeIter& rOther) const override |
1476 | 0 | { |
1477 | 0 | return iter == static_cast<const SalInstanceTreeIter&>(rOther).iter; |
1478 | 0 | } |
1479 | | SvTreeListEntry* iter; |
1480 | | }; |
1481 | | |
1482 | | class SalInstanceTreeView : public SalInstanceWidget, public virtual weld::TreeView |
1483 | | { |
1484 | | protected: |
1485 | | // owner for UserData |
1486 | | std::vector<std::unique_ptr<OUString>> m_aUserData; |
1487 | | VclPtr<SvTabListBox> m_xTreeView; |
1488 | | SvLBoxButtonData m_aCheckButtonData; |
1489 | | SvLBoxButtonData m_aRadioButtonData; |
1490 | | // currently expanding parent that logically, but not currently physically, |
1491 | | // contain placeholders |
1492 | | o3tl::sorted_vector<SvTreeListEntry*> m_aExpandingPlaceHolderParents; |
1493 | | // which columns should be custom rendered |
1494 | | o3tl::sorted_vector<int> m_aCustomRenders; |
1495 | | bool m_bTogglesAsRadio; |
1496 | | int m_nSortColumn; |
1497 | | |
1498 | | DECL_LINK(SelectHdl, SvTreeListBox*, void); |
1499 | | DECL_LINK(DeSelectHdl, SvTreeListBox*, void); |
1500 | | DECL_LINK(DoubleClickHdl, SvTreeListBox*, bool); |
1501 | | DECL_LINK(ExpandingHdl, SvTreeListBox*, bool); |
1502 | | DECL_LINK(EndDragHdl, HeaderBar*, void); |
1503 | | DECL_LINK(HeaderBarClickedHdl, HeaderBar*, void); |
1504 | | DECL_LINK(ToggleHdl, SvLBoxButtonData*, void); |
1505 | | DECL_LINK(ModelChangedHdl, SvTreeListBox*, void); |
1506 | | DECL_LINK(StartDragHdl, SvTreeListBox*, bool); |
1507 | | DECL_STATIC_LINK(SalInstanceTreeView, FinishDragHdl, SvTreeListBox*, void); |
1508 | | DECL_LINK(EditingEntryHdl, SvTreeListEntry*, bool); |
1509 | | DECL_LINK(EditedEntryHdl, const IterString&, bool); |
1510 | | DECL_LINK(VisibleRangeChangedHdl, SvTreeListBox*, void); |
1511 | | DECL_LINK(CompareHdl, const SvSortData&, sal_Int32); |
1512 | | DECL_LINK(PopupMenuHdl, const CommandEvent&, bool); |
1513 | | DECL_LINK(TooltipHdl, SvTreeListEntry*, OUString); |
1514 | | DECL_LINK(CustomRenderHdl, svtree_render_args, void); |
1515 | | DECL_LINK(CustomMeasureHdl, svtree_measure_args, Size); |
1516 | | |
1517 | | bool ExpandRow(const SalInstanceTreeIter& rIter); |
1518 | | |
1519 | | // Each row has a cell for the expander image, (and an optional cell for a |
1520 | | // checkbutton if enable_toggle_buttons has been called) which precede |
1521 | | // index 0 |
1522 | | int to_internal_model(int col) const; |
1523 | | |
1524 | | int to_external_model(int col) const; |
1525 | | |
1526 | | bool IsDummyEntry(SvTreeListEntry* pEntry) const; |
1527 | | |
1528 | | SvTreeListEntry* GetPlaceHolderChild(SvTreeListEntry* pEntry) const; |
1529 | | |
1530 | | static void set_font_color(SvTreeListEntry* pEntry, const Color& rColor); |
1531 | | |
1532 | | void AddStringItem(SvTreeListEntry* pEntry, const OUString& rStr, int nCol); |
1533 | | |
1534 | | void do_insert(const weld::TreeIter* pParent, int pos, const OUString* pStr, |
1535 | | const OUString* pId, const OUString* pIconName, |
1536 | | const VirtualDevice* pImageSurface, bool bChildrenOnDemand, weld::TreeIter* pRet, |
1537 | | bool bIsSeparator); |
1538 | | |
1539 | | void update_checkbutton_column_width(SvTreeListEntry* pEntry); |
1540 | | |
1541 | | void InvalidateModelEntry(SvTreeListEntry* pEntry); |
1542 | | |
1543 | | void do_set_toggle(SvTreeListEntry* pEntry, TriState eState, int col); |
1544 | | |
1545 | | static TriState do_get_toggle(SvTreeListEntry* pEntry, int col); |
1546 | | static bool do_get_sensitive(SvTreeListEntry* pEntry, int col); |
1547 | | |
1548 | | TriState get_toggle(SvTreeListEntry* pEntry, int col) const; |
1549 | | |
1550 | | void set_toggle(SvTreeListEntry* pEntry, TriState eState, int col); |
1551 | | |
1552 | | bool get_text_emphasis(SvTreeListEntry* pEntry, int col) const; |
1553 | | |
1554 | | void set_header_item_width(const std::vector<int>& rWidths); |
1555 | | |
1556 | | public: |
1557 | | SalInstanceTreeView(SvTabListBox* pTreeView, SalInstanceBuilder* pBuilder, bool bTakeOwnership); |
1558 | | |
1559 | | virtual void connect_query_tooltip(const Link<const weld::TreeIter&, OUString>& rLink) override; |
1560 | | |
1561 | | virtual void columns_autosize() override; |
1562 | | |
1563 | | virtual void freeze() override; |
1564 | | |
1565 | | virtual void thaw() override; |
1566 | | |
1567 | | virtual void set_column_fixed_widths(const std::vector<int>& rWidths) override; |
1568 | | |
1569 | | virtual void set_column_editables(const std::vector<bool>& rEditables) override; |
1570 | | |
1571 | | virtual void set_centered_column(int nCol) override; |
1572 | | |
1573 | | virtual int get_column_width(int nColumn) const override; |
1574 | | |
1575 | | virtual OUString get_column_title(int nColumn) const override; |
1576 | | |
1577 | | virtual void set_column_title(int nColumn, const OUString& rTitle) override; |
1578 | | |
1579 | | virtual void set_column_custom_renderer(int nColumn, bool bEnable) override; |
1580 | | |
1581 | | virtual void queue_draw() override; |
1582 | | |
1583 | | virtual void show() override; |
1584 | | |
1585 | | virtual void hide() override; |
1586 | | |
1587 | | virtual void do_insert(const weld::TreeIter* pParent, int pos, const OUString* pStr, |
1588 | | const OUString* pId, const OUString* pIconName, |
1589 | | VirtualDevice* pImageSurface, bool bChildrenOnDemand, |
1590 | | weld::TreeIter* pRet) override; |
1591 | | |
1592 | | virtual void do_insert_separator(int pos, const OUString& /*rId*/) override; |
1593 | | |
1594 | | virtual void bulk_insert_for_each( |
1595 | | int nSourceCount, const std::function<void(weld::TreeIter&, int nSourceIndex)>& func, |
1596 | | const weld::TreeIter* pParent = nullptr, const std::vector<int>* pFixedWidths = nullptr, |
1597 | | bool bGoingToSetText = false) override; |
1598 | | |
1599 | | virtual void set_font_color(int pos, const Color& rColor) override; |
1600 | | |
1601 | | virtual void set_font_color(const weld::TreeIter& rIter, const Color& rColor) override; |
1602 | | |
1603 | | virtual void do_remove(int pos) override; |
1604 | | |
1605 | | virtual int find_text(const OUString& rText) const override; |
1606 | | |
1607 | | virtual int find_id(const OUString& rId) const override; |
1608 | | |
1609 | | virtual void swap(int pos1, int pos2) override; |
1610 | | |
1611 | | virtual void do_clear() override; |
1612 | | |
1613 | | virtual void select_all() override; |
1614 | | virtual void unselect_all() override; |
1615 | | |
1616 | | virtual int n_children() const override; |
1617 | | |
1618 | | virtual int iter_n_children(const weld::TreeIter& rIter) const override; |
1619 | | |
1620 | | virtual void do_select(int pos) override; |
1621 | | |
1622 | | virtual int get_cursor_index() const override; |
1623 | | |
1624 | | virtual void do_set_cursor(int pos) override; |
1625 | | |
1626 | | virtual void do_scroll_to_row(int pos) override; |
1627 | | |
1628 | | virtual bool is_selected(int pos) const override; |
1629 | | |
1630 | | virtual void do_unselect(int pos) override; |
1631 | | |
1632 | | virtual std::vector<int> get_selected_rows() const override; |
1633 | | |
1634 | | OUString get_text(SvTreeListEntry* pEntry, int col) const; |
1635 | | |
1636 | | virtual OUString get_text(int pos, int col = -1) const override; |
1637 | | |
1638 | | void set_text(SvTreeListEntry* pEntry, const OUString& rText, int col); |
1639 | | |
1640 | | virtual void set_text(int pos, const OUString& rText, int col = -1) override; |
1641 | | |
1642 | | using SalInstanceWidget::set_sensitive; |
1643 | | using SalInstanceWidget::get_sensitive; |
1644 | | |
1645 | | void set_sensitive(SvTreeListEntry* pEntry, bool bSensitive, int col); |
1646 | | bool get_sensitive(SvTreeListEntry* pEntry, int col) const; |
1647 | | |
1648 | | virtual void set_sensitive(int pos, bool bSensitive, int col = -1) override; |
1649 | | |
1650 | | virtual void set_sensitive(const weld::TreeIter& rIter, bool bSensitive, int col = -1) override; |
1651 | | |
1652 | | virtual bool get_sensitive(int pos, int col) const override; |
1653 | | |
1654 | | virtual bool get_sensitive(const weld::TreeIter& rIter, int col) const override; |
1655 | | |
1656 | | virtual TriState get_toggle(int pos, int col = -1) const override; |
1657 | | |
1658 | | virtual TriState get_toggle(const weld::TreeIter& rIter, int col = -1) const override; |
1659 | | |
1660 | | virtual void enable_toggle_buttons(weld::ColumnToggleType eType) override; |
1661 | | |
1662 | | virtual void set_toggle(int pos, TriState eState, int col = -1) override; |
1663 | | |
1664 | | virtual void set_toggle(const weld::TreeIter& rIter, TriState eState, int col = -1) override; |
1665 | | |
1666 | | virtual void set_clicks_to_toggle(int nToggleBehavior) override; |
1667 | | |
1668 | | virtual void set_extra_row_indent(const weld::TreeIter& rIter, int nIndentLevel) override; |
1669 | | |
1670 | | void set_text_emphasis(SvTreeListEntry* pEntry, bool bOn, int col = -1); |
1671 | | |
1672 | | virtual void set_text_emphasis(const weld::TreeIter& rIter, bool bOn, int col) override; |
1673 | | |
1674 | | virtual void set_text_emphasis(int pos, bool bOn, int col) override; |
1675 | | |
1676 | | virtual bool get_text_emphasis(const weld::TreeIter& rIter, int col) const override; |
1677 | | |
1678 | | virtual bool get_text_emphasis(int pos, int col) const override; |
1679 | | |
1680 | | void set_text_align(SvTreeListEntry* pEntry, double fAlign, int col); |
1681 | | |
1682 | | virtual void set_text_align(const weld::TreeIter& rIter, double fAlign, int col) override; |
1683 | | |
1684 | | virtual void set_text_align(int pos, double fAlign, int col) override; |
1685 | | |
1686 | | virtual void connect_editing(const Link<const weld::TreeIter&, bool>& rStartLink, |
1687 | | const Link<const iter_string&, bool>& rEndLink) override; |
1688 | | |
1689 | | virtual void start_editing(const weld::TreeIter& rIter) override; |
1690 | | |
1691 | | virtual void end_editing() override; |
1692 | | |
1693 | | void set_image(SvTreeListEntry* pEntry, const Image& rImage, int col); |
1694 | | |
1695 | | virtual void set_image(int pos, const OUString& rImage, int col = -1) override; |
1696 | | |
1697 | | virtual void set_image(int pos, const css::uno::Reference<css::graphic::XGraphic>& rImage, |
1698 | | int col = -1) override; |
1699 | | |
1700 | | virtual void set_image(int pos, VirtualDevice& rImage, int col = -1) override; |
1701 | | |
1702 | | virtual void set_image(const weld::TreeIter& rIter, const OUString& rImage, |
1703 | | int col = -1) override; |
1704 | | |
1705 | | virtual void set_image(const weld::TreeIter& rIter, |
1706 | | const css::uno::Reference<css::graphic::XGraphic>& rImage, |
1707 | | int col = -1) override; |
1708 | | |
1709 | | virtual void set_image(const weld::TreeIter& rIter, VirtualDevice& rImage, |
1710 | | int col = -1) override; |
1711 | | |
1712 | | const OUString* getEntryData(int index) const; |
1713 | | |
1714 | | virtual OUString get_id(int pos) const override; |
1715 | | |
1716 | | void set_id(SvTreeListEntry* pEntry, const OUString& rId); |
1717 | | |
1718 | | virtual void set_id(int pos, const OUString& rId) override; |
1719 | | |
1720 | | virtual int get_selected_index() const override; |
1721 | | |
1722 | | virtual OUString get_selected_text() const override; |
1723 | | |
1724 | | virtual OUString get_selected_id() const override; |
1725 | | |
1726 | | virtual std::unique_ptr<weld::TreeIter> make_iterator(const weld::TreeIter* pOrig |
1727 | | = nullptr) const override; |
1728 | | |
1729 | | virtual void copy_iterator(const weld::TreeIter& rSource, weld::TreeIter& rDest) const override; |
1730 | | |
1731 | | virtual bool get_selected(weld::TreeIter* pIter) const override; |
1732 | | |
1733 | | virtual bool get_cursor(weld::TreeIter* pIter) const override; |
1734 | | |
1735 | | virtual void do_set_cursor(const weld::TreeIter& rIter) override; |
1736 | | |
1737 | | virtual bool get_iter_first(weld::TreeIter& rIter) const override; |
1738 | | |
1739 | | bool get_iter_abs_pos(weld::TreeIter& rIter, int nPos) const; |
1740 | | |
1741 | | virtual bool iter_next_sibling(weld::TreeIter& rIter) const override; |
1742 | | |
1743 | | virtual bool iter_previous_sibling(weld::TreeIter& rIter) const override; |
1744 | | |
1745 | | virtual bool iter_next(weld::TreeIter& rIter) const override; |
1746 | | |
1747 | | virtual bool iter_previous(weld::TreeIter& rIter) const override; |
1748 | | |
1749 | | virtual bool iter_children(weld::TreeIter& rIter) const override; |
1750 | | |
1751 | | virtual bool iter_parent(weld::TreeIter& rIter) const override; |
1752 | | |
1753 | | virtual void do_remove(const weld::TreeIter& rIter) override; |
1754 | | |
1755 | | virtual void do_select(const weld::TreeIter& rIter) override; |
1756 | | |
1757 | | virtual void do_scroll_to_row(const weld::TreeIter& rIter) override; |
1758 | | |
1759 | | virtual void do_unselect(const weld::TreeIter& rIter) override; |
1760 | | |
1761 | | virtual int get_iter_depth(const weld::TreeIter& rIter) const override; |
1762 | | |
1763 | | virtual bool iter_has_child(const weld::TreeIter& rIter) const override; |
1764 | | |
1765 | | virtual bool get_row_expanded(const weld::TreeIter& rIter) const override; |
1766 | | |
1767 | | virtual bool get_children_on_demand(const weld::TreeIter& rIter) const override; |
1768 | | |
1769 | | virtual void do_set_children_on_demand(const weld::TreeIter& rIter, |
1770 | | bool bChildrenOnDemand) override; |
1771 | | |
1772 | | virtual void expand_row(const weld::TreeIter& rIter) override; |
1773 | | |
1774 | | virtual void collapse_row(const weld::TreeIter& rIter) override; |
1775 | | |
1776 | | virtual OUString get_text(const weld::TreeIter& rIter, int col = -1) const override; |
1777 | | |
1778 | | virtual void set_text(const weld::TreeIter& rIter, const OUString& rText, |
1779 | | int col = -1) override; |
1780 | | |
1781 | | virtual OUString get_id(const weld::TreeIter& rIter) const override; |
1782 | | |
1783 | | virtual void set_id(const weld::TreeIter& rIter, const OUString& rId) override; |
1784 | | |
1785 | | virtual void enable_drag_source(rtl::Reference<TransferDataContainer>& rHelper, |
1786 | | sal_uInt8 eDNDConstants) override; |
1787 | | |
1788 | | virtual void set_selection_mode(SelectionMode eMode) override; |
1789 | | |
1790 | | virtual void all_foreach(const std::function<bool(weld::TreeIter&)>& func) override; |
1791 | | |
1792 | | virtual void selected_foreach(const std::function<bool(weld::TreeIter&)>& func) override; |
1793 | | |
1794 | | virtual void visible_foreach(const std::function<bool(weld::TreeIter&)>& func) override; |
1795 | | |
1796 | | virtual void connect_visible_range_changed(const Link<weld::TreeView&, void>& rLink) override; |
1797 | | |
1798 | | virtual void do_remove_selection() override; |
1799 | | |
1800 | | virtual bool is_selected(const weld::TreeIter& rIter) const override; |
1801 | | |
1802 | | virtual int get_iter_index_in_parent(const weld::TreeIter& rIter) const override; |
1803 | | |
1804 | | virtual int iter_compare(const weld::TreeIter& a, const weld::TreeIter& b) const override; |
1805 | | |
1806 | | virtual void move_subtree(weld::TreeIter& rNode, const weld::TreeIter* pNewParent, |
1807 | | int nIndexInNewParent) override; |
1808 | | |
1809 | | virtual int count_selected_rows() const override; |
1810 | | |
1811 | | virtual int get_height_rows(int nRows) const override; |
1812 | | |
1813 | | virtual void make_sorted() override; |
1814 | | |
1815 | | virtual void set_sort_func( |
1816 | | const std::function<int(const weld::TreeIter&, const weld::TreeIter&)>& func) override; |
1817 | | |
1818 | | virtual void make_unsorted() override; |
1819 | | |
1820 | | virtual void set_sort_order(bool bAscending) override; |
1821 | | |
1822 | | virtual bool get_sort_order() const override; |
1823 | | |
1824 | | virtual void set_sort_indicator(TriState eState, int col) override; |
1825 | | |
1826 | | virtual TriState get_sort_indicator(int col) const override; |
1827 | | |
1828 | | virtual int get_sort_column() const override; |
1829 | | |
1830 | | virtual void set_sort_column(int nColumn) override; |
1831 | | |
1832 | | SvTabListBox& getTreeView(); |
1833 | | |
1834 | | virtual bool get_dest_row_at_pos(const Point& rPos, weld::TreeIter* pResult, bool bDnDMode, |
1835 | | bool bAutoScroll = true) override; |
1836 | | |
1837 | | virtual void unset_drag_dest_row() override; |
1838 | | |
1839 | | virtual tools::Rectangle get_row_area(const weld::TreeIter& rIter) const override; |
1840 | | |
1841 | | virtual TreeView* get_drag_source() const override; |
1842 | | |
1843 | | virtual int vadjustment_get_value() const override; |
1844 | | |
1845 | | virtual void vadjustment_set_value(int nValue) override; |
1846 | | |
1847 | | virtual void set_show_expanders(bool bShow) override; |
1848 | | |
1849 | | virtual bool changed_by_hover() const override; |
1850 | | |
1851 | | virtual ~SalInstanceTreeView() override; |
1852 | | |
1853 | | // public version of protected weld::Widget methods |
1854 | 0 | void disableNotifyEvents() { disable_notify_events(); } |
1855 | 0 | void enableNotifyEvents() { enable_notify_events(); } |
1856 | | }; |
1857 | | |
1858 | | class SalInstanceExpander : public SalInstanceWidget, public virtual weld::Expander |
1859 | | { |
1860 | | private: |
1861 | | VclPtr<VclExpander> m_xExpander; |
1862 | | |
1863 | | DECL_LINK(ExpandedHdl, VclExpander&, void); |
1864 | | |
1865 | | public: |
1866 | | SalInstanceExpander(VclExpander* pExpander, SalInstanceBuilder* pBuilder, bool bTakeOwnership); |
1867 | | |
1868 | | virtual void set_label(const OUString& rText) override; |
1869 | | |
1870 | | virtual OUString get_label() const override; |
1871 | | |
1872 | | virtual bool get_expanded() const override; |
1873 | | |
1874 | | virtual void set_expanded(bool bExpand) override; |
1875 | | |
1876 | | virtual bool has_focus() const override; |
1877 | | |
1878 | | virtual void grab_focus() override; |
1879 | | |
1880 | | virtual ~SalInstanceExpander() override; |
1881 | | }; |
1882 | | |
1883 | | class SalInstanceIconView : public SalInstanceWidget, public virtual weld::IconView |
1884 | | { |
1885 | | protected: |
1886 | | VclPtr<::IconView> m_xIconView; |
1887 | | |
1888 | | private: |
1889 | | bool m_bFixedItemWidth = false; |
1890 | | |
1891 | | // owner for UserData |
1892 | | std::vector<std::unique_ptr<OUString>> m_aUserData; |
1893 | | |
1894 | | DECL_LINK(SelectHdl, SvTreeListBox*, void); |
1895 | | DECL_LINK(DeSelectHdl, SvTreeListBox*, void); |
1896 | | DECL_LINK(DoubleClickHdl, SvTreeListBox*, bool); |
1897 | | DECL_LINK(CommandHdl, const CommandEvent&, bool); |
1898 | | DECL_LINK(TooltipHdl, SvTreeListEntry*, OUString); |
1899 | | DECL_LINK(DumpImageHdl, const ::IconView::encoded_image_query&, bool); |
1900 | | |
1901 | | void do_insert(int pos, const OUString* pStr, const OUString* pId, const Image& rImage, |
1902 | | weld::TreeIter* pRet); |
1903 | | |
1904 | | public: |
1905 | | SalInstanceIconView(::IconView* pIconView, SalInstanceBuilder* pBuilder, bool bTakeOwnership); |
1906 | | |
1907 | | virtual int get_item_width() const override; |
1908 | | virtual void set_item_width(int width) override; |
1909 | | |
1910 | | virtual void freeze() override; |
1911 | | |
1912 | | virtual void thaw() override; |
1913 | | |
1914 | | virtual void do_insert(int pos, const OUString* pStr, const OUString* pId, |
1915 | | const OUString* pIconName, weld::TreeIter* pRet) override; |
1916 | | |
1917 | | virtual void do_insert(int pos, const OUString* pStr, const OUString* pId, const Bitmap* pIcon, |
1918 | | weld::TreeIter* pRet) override; |
1919 | | |
1920 | | virtual void insert_separator(int pos, const OUString* pId) override; |
1921 | | |
1922 | | virtual void connect_query_tooltip(const Link<const weld::TreeIter&, OUString>& rLink) override; |
1923 | | |
1924 | | virtual void |
1925 | | connect_get_image(const Link<const weld::encoded_image_query&, bool>& rLink) override; |
1926 | | |
1927 | | virtual OUString get_selected_id() const override; |
1928 | | |
1929 | | virtual OUString get_selected_text() const override; |
1930 | | |
1931 | | virtual int count_selected_items() const override; |
1932 | | |
1933 | | virtual void do_select(int pos) override; |
1934 | | |
1935 | | virtual void do_unselect(int pos) override; |
1936 | | |
1937 | | virtual void select_all() override; |
1938 | | virtual void unselect_all() override; |
1939 | | |
1940 | | virtual int n_children() const override; |
1941 | | |
1942 | | virtual std::unique_ptr<weld::TreeIter> make_iterator(const weld::TreeIter* pOrig |
1943 | | = nullptr) const override; |
1944 | | |
1945 | | virtual bool get_selected(weld::TreeIter* pIter) const override; |
1946 | | |
1947 | | virtual bool get_cursor(weld::TreeIter* pIter) const override; |
1948 | | |
1949 | | virtual void do_set_cursor(const weld::TreeIter& rIter) override; |
1950 | | |
1951 | | virtual bool get_iter_first(weld::TreeIter& rIter) const override; |
1952 | | |
1953 | | virtual bool iter_next_sibling(weld::TreeIter& rIter) const override; |
1954 | | |
1955 | | virtual void do_scroll_to_item(const weld::TreeIter& rIter) override; |
1956 | | |
1957 | | virtual void selected_foreach(const std::function<bool(weld::TreeIter&)>& func) override; |
1958 | | |
1959 | | virtual OUString get_id(const weld::TreeIter& rIter) const override; |
1960 | | |
1961 | | virtual OUString get_id(int pos) const override; |
1962 | | |
1963 | | virtual void do_remove(int pos) override; |
1964 | | |
1965 | | const OUString* getEntryData(int index) const; |
1966 | | |
1967 | | virtual void set_image(int pos, VirtualDevice& rImage) override; |
1968 | | |
1969 | | virtual void set_text(int pos, const OUString& rText) override; |
1970 | | |
1971 | | virtual void set_id(int pos, const OUString& rId) override; |
1972 | | |
1973 | | virtual void set_item_accessible_name(int pos, const OUString& rName) override; |
1974 | | |
1975 | | virtual OUString get_text(const weld::TreeIter& rIter) const override; |
1976 | | |
1977 | | virtual tools::Rectangle get_rect(int pos) const override; |
1978 | | |
1979 | | virtual void do_clear() override; |
1980 | | |
1981 | | virtual ~SalInstanceIconView() override; |
1982 | | }; |
1983 | | |
1984 | | class SalInstanceRadioButton : public SalInstanceButton, public virtual weld::RadioButton |
1985 | | { |
1986 | | private: |
1987 | | VclPtr<::RadioButton> m_xRadioButton; |
1988 | | |
1989 | | DECL_LINK(ToggleHdl, ::RadioButton&, void); |
1990 | | |
1991 | | public: |
1992 | | SalInstanceRadioButton(::RadioButton* pButton, SalInstanceBuilder* pBuilder, |
1993 | | bool bTakeOwnership); |
1994 | | |
1995 | | virtual void do_set_active(bool active) override; |
1996 | | |
1997 | | virtual bool get_active() const override; |
1998 | | |
1999 | | virtual void set_image(VirtualDevice* pDevice) override; |
2000 | | |
2001 | | virtual void set_image(const css::uno::Reference<css::graphic::XGraphic>& rImage) override; |
2002 | | |
2003 | | virtual void set_from_icon_name(const OUString& rIconName) override; |
2004 | | |
2005 | 0 | virtual void set_label(const OUString& rText) override { SalInstanceButton::set_label(rText); } |
2006 | | |
2007 | 0 | virtual OUString get_label() const override { return SalInstanceButton::get_label(); } |
2008 | | |
2009 | | virtual void set_label_wrap(bool wrap) override; |
2010 | | |
2011 | | virtual ~SalInstanceRadioButton() override; |
2012 | | }; |
2013 | | |
2014 | | class SalInstanceFrame : public SalInstanceContainer, public virtual weld::Frame |
2015 | | { |
2016 | | private: |
2017 | | VclPtr<VclFrame> m_xFrame; |
2018 | | |
2019 | | public: |
2020 | | SalInstanceFrame(VclFrame* pFrame, SalInstanceBuilder* pBuilder, bool bTakeOwnership); |
2021 | | |
2022 | | virtual void set_label(const OUString& rText) override; |
2023 | | |
2024 | | virtual OUString get_label() const override; |
2025 | | }; |
2026 | | |
2027 | | class SalInstanceMenuButton : public SalInstanceButton, public virtual weld::MenuButton |
2028 | | { |
2029 | | protected: |
2030 | | VclPtr<::MenuButton> m_xMenuButton; |
2031 | | sal_uInt16 m_nLastId; |
2032 | | |
2033 | | DECL_LINK(MenuSelectHdl, ::MenuButton*, void); |
2034 | | DECL_LINK(ActivateHdl, ::MenuButton*, void); |
2035 | | |
2036 | | public: |
2037 | | SalInstanceMenuButton(::MenuButton* pButton, SalInstanceBuilder* pBuilder, bool bTakeOwnership); |
2038 | | |
2039 | | virtual void do_set_active(bool active) override; |
2040 | | |
2041 | | virtual bool get_active() const override; |
2042 | | |
2043 | | virtual void insert_item(int pos, const OUString& rId, const OUString& rStr, |
2044 | | const OUString* pIconName, VirtualDevice* pImageSurface, |
2045 | | TriState eCheckRadioFalse) override; |
2046 | | |
2047 | | virtual void insert_separator(int pos, const OUString& rId) override; |
2048 | | |
2049 | | virtual void set_item_sensitive(const OUString& rIdent, bool bSensitive) override; |
2050 | | |
2051 | | virtual void remove_item(const OUString& rId) override; |
2052 | | |
2053 | | virtual void clear() override; |
2054 | | |
2055 | | virtual void set_item_active(const OUString& rIdent, bool bActive) override; |
2056 | | |
2057 | | virtual void set_item_label(const OUString& rIdent, const OUString& rText) override; |
2058 | | |
2059 | | virtual OUString get_item_label(const OUString& rIdent) const override; |
2060 | | |
2061 | | virtual void set_item_visible(const OUString& rIdent, bool bShow) override; |
2062 | | |
2063 | | virtual void set_popover(weld::Widget* pPopover) override; |
2064 | | |
2065 | | virtual ~SalInstanceMenuButton() override; |
2066 | | }; |
2067 | | |
2068 | | class SalInstancePopover : public SalInstanceContainer, public virtual weld::Popover |
2069 | | { |
2070 | | private: |
2071 | | VclPtr<DockingWindow> m_xPopover; |
2072 | | |
2073 | | DECL_LINK(PopupModeEndHdl, FloatingWindow*, void); |
2074 | | |
2075 | | void ImplPopDown(); |
2076 | | |
2077 | | public: |
2078 | | SalInstancePopover(DockingWindow* pPopover, SalInstanceBuilder* pBuilder, bool bTakeOwnership); |
2079 | | |
2080 | | ~SalInstancePopover(); |
2081 | | |
2082 | | virtual void popup_at_rect(weld::Widget* pParent, const tools::Rectangle& rRect, |
2083 | | weld::Placement ePlace = weld::Placement::Under) override; |
2084 | | |
2085 | | virtual void popdown() override; |
2086 | | |
2087 | | virtual void resize_to_request() override; |
2088 | | }; |
2089 | | |
2090 | | class SalInstanceBox : public SalInstanceContainer, public virtual weld::Box |
2091 | | { |
2092 | | private: |
2093 | | VclPtr<VclBox> m_xBox; |
2094 | | |
2095 | | public: |
2096 | | SalInstanceBox(VclBox* pContainer, SalInstanceBuilder* pBuilder, bool bTakeOwnership); |
2097 | | virtual void reorder_child(weld::Widget* pWidget, int nNewPosition) override; |
2098 | | virtual void sort_native_button_order() override; |
2099 | | }; |
2100 | | |
2101 | | class SalInstanceGrid : public SalInstanceContainer, public virtual weld::Grid |
2102 | | { |
2103 | | public: |
2104 | | SalInstanceGrid(VclGrid* pGrid, SalInstanceBuilder* pBuilder, bool bTakeOwnership); |
2105 | | |
2106 | | public: |
2107 | | virtual void set_child_left_attach(weld::Widget& rWidget, int nAttach) override; |
2108 | | virtual int get_child_left_attach(weld::Widget& rWidget) const override; |
2109 | | virtual void set_child_column_span(weld::Widget& rWidget, int nCols) override; |
2110 | | virtual void set_child_top_attach(weld::Widget& rWidget, int nAttach) override; |
2111 | | virtual int get_child_top_attach(weld::Widget& rWidget) const override; |
2112 | | }; |
2113 | | |
2114 | | class SalInstanceImage : public SalInstanceWidget, public virtual weld::Image |
2115 | | { |
2116 | | private: |
2117 | | VclPtr<FixedImage> m_xImage; |
2118 | | |
2119 | | public: |
2120 | | SalInstanceImage(FixedImage* pImage, SalInstanceBuilder* pBuilder, bool bTakeOwnership); |
2121 | | |
2122 | | virtual void set_from_icon_name(const OUString& rIconName) override; |
2123 | | |
2124 | | virtual void set_image(VirtualDevice* pDevice) override; |
2125 | | |
2126 | | virtual void set_image(const css::uno::Reference<css::graphic::XGraphic>& rImage) override; |
2127 | | }; |
2128 | | |
2129 | | class SalInstanceScrolledWindow : public SalInstanceContainer, public virtual weld::ScrolledWindow |
2130 | | { |
2131 | | private: |
2132 | | VclPtr<VclScrolledWindow> m_xScrolledWindow; |
2133 | | Link<ScrollBar*, void> m_aOrigVScrollHdl; |
2134 | | Link<ScrollBar*, void> m_aOrigHScrollHdl; |
2135 | | bool m_bUserManagedScrolling; |
2136 | | |
2137 | | DECL_LINK(VscrollHdl, ScrollBar*, void); |
2138 | | DECL_LINK(HscrollHdl, ScrollBar*, void); |
2139 | | |
2140 | | static void customize_scrollbars(ScrollBar& rScrollBar, const Color& rButtonTextColor, |
2141 | | const Color& rBackgroundColor, const Color& rShadowColor, |
2142 | | const Color& rFaceColor); |
2143 | | |
2144 | | public: |
2145 | | SalInstanceScrolledWindow(VclScrolledWindow* pScrolledWindow, SalInstanceBuilder* pBuilder, |
2146 | | bool bTakeOwnership, bool bUserManagedScrolling); |
2147 | | |
2148 | | virtual void hadjustment_configure(int value, int upper, int step_increment, int page_increment, |
2149 | | int page_size) override; |
2150 | | virtual int hadjustment_get_value() const override; |
2151 | | virtual void hadjustment_set_value(int value) override; |
2152 | | virtual int hadjustment_get_upper() const override; |
2153 | | virtual void hadjustment_set_upper(int upper) override; |
2154 | | virtual int hadjustment_get_page_size() const override; |
2155 | | virtual void hadjustment_set_page_size(int size) override; |
2156 | | virtual void hadjustment_set_page_increment(int size) override; |
2157 | | virtual void hadjustment_set_step_increment(int size) override; |
2158 | | virtual void set_hpolicy(VclPolicyType eHPolicy) override; |
2159 | | virtual VclPolicyType get_hpolicy() const override; |
2160 | | |
2161 | | virtual void vadjustment_configure(int value, int upper, int step_increment, int page_increment, |
2162 | | int page_size) override; |
2163 | | virtual int vadjustment_get_value() const override; |
2164 | | virtual void vadjustment_set_value(int value) override; |
2165 | | virtual int vadjustment_get_upper() const override; |
2166 | | virtual void vadjustment_set_upper(int upper) override; |
2167 | | virtual int vadjustment_get_page_size() const override; |
2168 | | virtual void vadjustment_set_page_size(int size) override; |
2169 | | virtual void vadjustment_set_page_increment(int size) override; |
2170 | | virtual void vadjustment_set_step_increment(int size) override; |
2171 | | |
2172 | | virtual void set_vpolicy(VclPolicyType eVPolicy) override; |
2173 | | virtual VclPolicyType get_vpolicy() const override; |
2174 | | virtual int get_scroll_thickness() const override; |
2175 | | virtual void set_scroll_thickness(int nThickness) override; |
2176 | | virtual void customize_scrollbars(const Color& rBackgroundColor, const Color& rShadowColor, |
2177 | | const Color& rFaceColor) override; |
2178 | | virtual ~SalInstanceScrolledWindow() override; |
2179 | | }; |
2180 | | |
2181 | | class SalInstanceLevelBar : public SalInstanceWidget, public virtual weld::LevelBar |
2182 | | { |
2183 | | private: |
2184 | | VclPtr<::ProgressBar> m_xLevelBar; |
2185 | | |
2186 | | public: |
2187 | | SalInstanceLevelBar(::ProgressBar* pLevelBar, SalInstanceBuilder* pBuilder, bool bTakeOwnership) |
2188 | 0 | : SalInstanceWidget(pLevelBar, pBuilder, bTakeOwnership) |
2189 | 0 | , m_xLevelBar(pLevelBar) |
2190 | 0 | { |
2191 | 0 | } Unexecuted instantiation: SalInstanceLevelBar::SalInstanceLevelBar(ProgressBar*, SalInstanceBuilder*, bool) Unexecuted instantiation: SalInstanceLevelBar::SalInstanceLevelBar(ProgressBar*, SalInstanceBuilder*, bool) |
2192 | | |
2193 | | virtual void set_percentage(double fPercentage) override |
2194 | 0 | { |
2195 | 0 | m_xLevelBar->SetValue(static_cast<sal_uInt16>(fPercentage)); |
2196 | 0 | } |
2197 | | }; |
2198 | | |
2199 | | class SalInstanceCalendar : public SalInstanceWidget, public virtual weld::Calendar |
2200 | | { |
2201 | | private: |
2202 | | VclPtr<::Calendar> m_xCalendar; |
2203 | | |
2204 | | DECL_LINK(SelectHdl, ::Calendar*, void); |
2205 | | DECL_LINK(ActivateHdl, ::Calendar*, void); |
2206 | | |
2207 | | public: |
2208 | | SalInstanceCalendar(::Calendar* pCalendar, SalInstanceBuilder* pBuilder, bool bTakeOwnership) |
2209 | 0 | : SalInstanceWidget(pCalendar, pBuilder, bTakeOwnership) |
2210 | 0 | , m_xCalendar(pCalendar) |
2211 | 0 | { |
2212 | 0 | m_xCalendar->SetSelectHdl(LINK(this, SalInstanceCalendar, SelectHdl)); |
2213 | 0 | m_xCalendar->SetActivateHdl(LINK(this, SalInstanceCalendar, ActivateHdl)); |
2214 | 0 | } Unexecuted instantiation: SalInstanceCalendar::SalInstanceCalendar(Calendar*, SalInstanceBuilder*, bool) Unexecuted instantiation: SalInstanceCalendar::SalInstanceCalendar(Calendar*, SalInstanceBuilder*, bool) |
2215 | | |
2216 | 0 | virtual void set_date(const Date& rDate) override { m_xCalendar->SetCurDate(rDate); } |
2217 | | |
2218 | 0 | virtual Date get_date() const override { return m_xCalendar->GetFirstSelectedDate(); } |
2219 | | |
2220 | | virtual ~SalInstanceCalendar() override |
2221 | 0 | { |
2222 | 0 | m_xCalendar->SetSelectHdl(Link<::Calendar*, void>()); |
2223 | 0 | m_xCalendar->SetActivateHdl(Link<::Calendar*, void>()); |
2224 | 0 | } |
2225 | | }; |
2226 | | |
2227 | | class SalInstanceFormattedSpinButton : public SalInstanceEntry, |
2228 | | public virtual weld::FormattedSpinButton |
2229 | | { |
2230 | | private: |
2231 | | VclPtr<FormattedField> m_xButton; |
2232 | | weld::EntryFormatter* m_pFormatter; |
2233 | | Link<weld::Widget&, void> m_aLoseFocusHdl; |
2234 | | |
2235 | | DECL_LINK(UpDownHdl, SpinField&, void); |
2236 | | DECL_LINK(LoseFocusHdl, Control&, void); |
2237 | | |
2238 | | public: |
2239 | | SalInstanceFormattedSpinButton(FormattedField* pButton, SalInstanceBuilder* pBuilder, |
2240 | | bool bTakeOwnership); |
2241 | | |
2242 | | virtual void do_set_text(const OUString& rText) override; |
2243 | | |
2244 | | virtual void connect_changed(const Link<weld::Entry&, void>& rLink) override; |
2245 | | |
2246 | | virtual void connect_focus_out(const Link<weld::Widget&, void>& rLink) override; |
2247 | | |
2248 | | virtual void SetFormatter(weld::EntryFormatter* pFormatter) override; |
2249 | | |
2250 | | virtual void sync_value_from_formatter() override |
2251 | 0 | { |
2252 | | // no-op for gen |
2253 | 0 | } |
2254 | | |
2255 | | virtual void sync_range_from_formatter() override |
2256 | 0 | { |
2257 | | // no-op for gen |
2258 | 0 | } |
2259 | | |
2260 | | virtual void sync_increments_from_formatter() override |
2261 | 0 | { |
2262 | | // no-op for gen |
2263 | 0 | } |
2264 | | |
2265 | | virtual Formatter& GetFormatter() override; |
2266 | | |
2267 | | virtual ~SalInstanceFormattedSpinButton() override; |
2268 | | }; |
2269 | | |
2270 | | class SalInstanceVerticalNotebook : public SalInstanceWidget, public virtual weld::Notebook |
2271 | | { |
2272 | | private: |
2273 | | VclPtr<VerticalTabControl> m_xNotebook; |
2274 | | /// Constructed on-demand. |
2275 | | mutable std::map<OUString, std::shared_ptr<SalInstanceContainer>> m_aPages; |
2276 | | |
2277 | | DECL_LINK(DeactivatePageHdl, VerticalTabControl*, bool); |
2278 | | DECL_LINK(ActivatePageHdl, VerticalTabControl*, void); |
2279 | | |
2280 | | public: |
2281 | | SalInstanceVerticalNotebook(VerticalTabControl* pNotebook, SalInstanceBuilder* pBuilder, |
2282 | | bool bTakeOwnership); |
2283 | | |
2284 | | virtual int get_current_page() const override; |
2285 | | |
2286 | | virtual OUString get_page_ident(int nPage) const override; |
2287 | | |
2288 | | virtual OUString get_current_page_ident() const override; |
2289 | | |
2290 | | virtual int get_page_index(const OUString& rIdent) const override; |
2291 | | |
2292 | | virtual weld::Container* get_page(const OUString& rIdent) const override; |
2293 | | |
2294 | | virtual void set_current_page(int nPage) override; |
2295 | | |
2296 | | virtual void set_current_page(const OUString& rIdent) override; |
2297 | | |
2298 | | virtual void remove_page(const OUString& rIdent) override; |
2299 | | |
2300 | | virtual void insert_page(const OUString& rIdent, const OUString& rLabel, int nPos, |
2301 | | const OUString* pIconName = nullptr) override; |
2302 | | |
2303 | | virtual int get_n_pages() const override; |
2304 | | |
2305 | | virtual void set_tab_label_text(const OUString& rIdent, const OUString& rText) override; |
2306 | | |
2307 | | virtual OUString get_tab_label_text(const OUString& rIdent) const override; |
2308 | | |
2309 | | virtual void set_show_tabs(bool /*bShow*/) override; |
2310 | | |
2311 | | virtual ~SalInstanceVerticalNotebook() override; |
2312 | | }; |
2313 | | |
2314 | | class SalInstanceColorChooserDialog : public SalInstanceDialog, |
2315 | | public virtual weld::ColorChooserDialog |
2316 | | { |
2317 | | ScopedVclPtr<AbstractColorPickerDialog> m_pAbstractColorPickerDialog; |
2318 | | |
2319 | | public: |
2320 | | SalInstanceColorChooserDialog(AbstractColorPickerDialog* pColorDialog); |
2321 | | virtual ~SalInstanceColorChooserDialog() override; |
2322 | | |
2323 | | virtual void set_color(const Color& rColor) override; |
2324 | | virtual Color get_color() const override; |
2325 | | }; |
2326 | | |
2327 | | /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ |