acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
aaa_interchange.h
1//
2// Created by camilo on 31/01/2022 14:32 <3ThomasBorregaardSorensen!!
3// renamed interchange from interchange by camilo on
4// 2024-09-26 15:37 <3ThomasBorregaardSorensen!!
5//
6#pragma once
7
8
9#include "acme/platform/conversation_message.h"
10#include "acme/user/user/drag_client.h"
11#include "acme/user/user/interaction_base.h"
12#include "acme/prototype/geometry2d/rectangle.h"
13#include "acme/user/user/item.h"
14
15namespace nano
16{
17
18
19 namespace user
20 {
21
22
23class CLASS_DECL_ACME interchange :
24 virtual public ::acme::user::interaction
25 //virtual public ::conversation_message
26{
27public:
28
29
30 ::function < void(interchange *) > m_functionClose;
31
32 //::pointer<::micro::window_implementation> m_pnanouserwindowimplementation;
33 ::pointer<::nano::graphics::brush> m_pbrushWindow;
34 ::pointer<::nano::graphics::brush> m_pbrushText;
35 ::pointer<::nano::graphics::brush> m_pbrushHyperlink;
36 ::pointer<::nano::graphics::brush> m_pbrushHyperlinkHover;
37 ::pointer<::nano::graphics::pen> m_ppenBorder;
38 ::pointer<::nano::graphics::pen> m_ppenBorderFocus;
39 ::pointer<::nano::graphics::pen> m_ppenNull;
40 ::pointer<::nano::graphics::font> m_pfont;
41 ::color::color m_colorText;
42 ::color::color m_colorHyperlink;
43 ::color::color m_colorHyperlinkHover;
44 ::color::color m_colorFocus;
45 ::color::color m_colorWindow;
46 bool m_bNcActive;
47
48 i32_rectangle m_rectangle;
49
50 pointer_array < ::micro::child > m_childa;
51 ::atom m_atomLeftButtonDown;
52 ::atom m_atomLeftButtonUp;
53 ::atom m_atomRightButtonDown;
54 ::atom m_atomRightButtonUp;
55 ::pointer<::micro::child> m_pchildFocus;
56 ::pointer<::micro::child> m_pchildHover;
57 ::pointer<::micro::child> m_pchildCapture;
58
59
60 bool m_bCapture;
61 bool m_bStartCentered;
62 bool m_bArbitraryPositioning;
63 ::i32 m_iFontSize;
64 enum_font m_efont;
65
66 bool m_bTopMost;
67
68
69 pointer_array < ::micro::button > m_nanobuttona;
70 ::collection::index m_iDefaultButton = -1;
71
72 //map < const ::item *, ::user::item > m_useritemmap;
73
74
75 interchange();
76 ~interchange() override;
77
78
79 ::payload do_synchronously(const class time & timeWait = ::time::infinity()) override;
80 void do_asynchronously() override;
81
82
83 //virtual ::pointer < item_container > item_form();
84
85 void on_initialize_particle() override;
86
87 void create() override;
88
89 void show_window() override;
90
91 void hide() override;
92
93 void message_loop() override;
94
95 void draw(::nano::graphics::context * pnanodevice) override;
96
97 void on_draw(::nano::graphics::context * pnanodevice) override;
98
99 void on_char(::i32 iChar) override;
100
101 bool is_active() override;
102 void set_active() override;
103
104 void draw_children(::nano::graphics::context * pnanodevice) override;
105
106 void delete_drawing_objects() override;
107 bool get_dark_mode() override;
108
109 void create_drawing_objects() override;
110 void update_drawing_objects() override;
111
112
113 //bool defer_perform_entire_reposition_process() override;
114
115 virtual bool defer_perform_entire_reposition_process(::user::mouse * pmouse);
116
117 virtual bool defer_perform_entire_resizing_process(::experience::enum_frame eframeSizing, ::user::mouse * pmouse);
118
119 ::i32_point try_absolute_mouse_position(const ::i32_point & point) override;
120
121
122 ::i32_point origin() override;
123
124
125 //::micro::child * hit_test(::user::mouse * pmouse, ::user::e_zorder ezorder) override;
126 virtual ::micro::child * hit_test(::user::mouse * pmouse, ::user::e_zorder ezorder);
127 virtual ::micro::child * on_hit_test(const ::i32_point & point, ::user::e_zorder ezorder);
128 virtual void add_child(::micro::child * pchild);
129 virtual ::micro::child * get_child_by_id(const ::atom & atom);
130
131 ::payload get_result() override;
132
133 void on_mouse_move(::user::mouse * pmouse) override;
134 void on_left_button_down(::user::mouse * pmouse) override;
135 void on_left_button_up(::user::mouse * pmouse) override;
136 void on_click(const ::payload & payload, ::user::mouse * pmouse) override;
137 void on_right_button_down(::user::mouse * pmouse) override;
138 void on_right_button_up(::user::mouse * pmouse) override;
139 void on_right_click(const ::payload & payload, ::user::mouse * pmouse) override;
140
141 void set_position(const ::i32_point & point) override;
142
143 ::i32_rectangle get_window_rectangle() override;
144
145 void on_create_window() override;
146
147 void destroy() override;
148
149 void redraw() override;
150
151 void get_client_rectangle(::i32_rectangle & rectangle) override;
152
153 //void get_window_rectangle() override;
154
155 void set_capture() override;
156
157 bool has_capture() override;
158
159 void release_capture() override;
160
161 void set_cursor(enum_cursor ecursor) override;
162
163
164 void add_button(const ::scoped_string & scopedstrText, enum_dialog_result edialogresult, ::i8 chLetter);
165
166
167 void display_temporary_file_with_text(const ::scoped_string & scopedstr);
168
169
170 ::pointer<::nano::graphics::context>create_device();
171
172
173 void _run_modal_loop() override;
174
175
176 //::atom do_synchronously() override;
177
178
179 void handle(::topic * ptopic, ::handler_context * phandlercontext) override;
180
181
182 //::user::item & user_item(const ::item * pitem) override;
183
184
185};
186
187
188 } // namespace user
189
190
191} // namespace nano
192
193
194
Definition interaction.h:50
Definition atom.h:237
Definition color.h:162
Definition _template_forward_declaration.h:297
Definition context.h:24
Definition aaa_time.h:13
Definition topic.h:17