xtd - Reference Guide  0.1.0
Modern c++17/20 framework to create console, GUI and unit test applications on Windows, macOS, Linux, iOS and android.
Loading...
Searching...
No Matches
button.h
Go to the documentation of this file.
1
4#pragma once
5#include <xtd/environment.h>
6#include "button_base.h"
7#include "dialog_result.h"
8#include "ibutton_control.h"
9#include "timer.h"
11
13namespace xtd {
15 namespace forms {
55 public:
59 auto_repeat_timer_.tick += [&] {
60 auto_repeat_timer_.enabled(false);
61 if (enabled()) {
62 perform_click();
63 auto_repeat_timer_.interval_milliseconds(auto_repeat_interval_);
64 auto_repeat_timer_.enabled(auto_repeat_);
65 }
66 };
67 }
68
71 virtual bool auto_repeat() const {return auto_repeat_;}
75 virtual button& auto_repeat(bool auto_repeat) {
76 if (auto_repeat_ != auto_repeat) {
77 auto_repeat_ = auto_repeat;
78 if (!auto_repeat_) auto_repeat_timer_.enabled(false);
79 }
80 return *this;
81 }
82
85 virtual int32_t auto_repeat_delay() const {return auto_repeat_delay_;}
89 virtual button& auto_repeat_delay(int32_t auto_repeat_delay) {
90 if (auto_repeat_delay_ != auto_repeat_delay)
91 auto_repeat_delay_ = auto_repeat_delay;
92 return *this;
93 }
94
97 virtual int32_t auto_repeat_interval() const {return auto_repeat_interval_;}
101 virtual button& auto_repeat_interval(int32_t auto_repeat_interval) {
102 if (auto_repeat_interval_ != auto_repeat_interval)
103 auto_repeat_interval_ = auto_repeat_interval;
104 return *this;
105 }
106
109 virtual forms::auto_size_mode auto_size_mode() const {return auto_size_mode_;}
113
114 forms::dialog_result dialog_result() const override {return dialog_result_;}
116
117 void notify_default(bool value) override;
118
119 void perform_click() override;
120
121 protected:
122 forms::create_params create_params() const override;
123
125
126 void on_click(const event_args& e) override;
127
128 void on_enabled_changed(const event_args& e) override {
130 button_base::on_enabled_changed(e);
131 }
132
133 void on_handle_created(const event_args& e) override;
134
135 void on_image_changed(const xtd::event_args& e) override;
136
137 void on_mouse_down(const mouse_event_args& e) override {
138 auto_repeat_timer_.interval_milliseconds(auto_repeat_delay_);
139 auto_repeat_timer_.enabled(auto_repeat_);
141 button_base::on_mouse_down(e);
142 }
143
144 void on_mouse_enter(const event_args& e) override {
145 if (flat_style_ != xtd::forms::flat_style::system && enabled()) state_ = (mouse_buttons_ & mouse_buttons::left) == mouse_buttons::left ? xtd::forms::visual_styles::push_button_state::pressed : xtd::forms::visual_styles::push_button_state::hot;
146 button_base::on_mouse_enter(e);
147 }
148
149 void on_mouse_leave(const event_args& e) override {
151 button_base::on_mouse_leave(e);
152 }
153
154 void on_mouse_up(const mouse_event_args& e) override {
155 auto_repeat_timer_.enabled(false);
157 button_base::on_mouse_up(e);
158 }
159
160 void on_paint(paint_event_args& e) override;
161
165 //void wnd_proc(message& message) override;
166
168 forms::dialog_result dialog_result_ = forms::dialog_result::none;
170
171 private:
172 //void wm_click(message& message);
173 //void wm_mouse_up(message& message);
174 bool auto_repeat_ = false;
175 timer auto_repeat_timer_;
176 int32_t auto_repeat_delay_ = 300;
177 int32_t auto_repeat_interval_ = 100;
178 bool default_button_ = false;
180 };
181 }
182}
Contains xtd::forms::button_base class.
Stores an ordered pair of integers, which specify a height and width.
Definition: size.h:25
Represents the base class for classes that contain event data, and provides a value to use for events...
Definition: event_args.h:18
Implements the basic functionality common to button controls.
Definition: button_base.h:26
Represents a Windows button control.
Definition: button.h:54
void perform_click() override
Generates a click event for the control.
virtual bool auto_repeat() const
Gets if this button instance is auto repeat.
Definition: button.h:71
forms::dialog_result dialog_result() const override
Gets the value returned to the parent form when the button is clicked.
Definition: button.h:114
void on_paint(paint_event_args &e) override
Raises the control::paint event.
void on_handle_created(const event_args &e) override
Raises the control::handle_created event.
void on_image_changed(const xtd::event_args &e) override
Raises the button_base::image_changed event.
void on_mouse_enter(const event_args &e) override
Raises the control::mouse_enter event.
Definition: button.h:144
void on_click(const event_args &e) override
Raises the control::click event.
virtual int32_t auto_repeat_interval() const
Gets the auto repeat interval.
Definition: button.h:97
forms::create_params create_params() const override
Gets the required creation parameters when the control handle is created.
virtual button & auto_repeat(bool auto_repeat)
Sets if this button instance is auto repeat.
Definition: button.h:75
virtual button & auto_repeat_interval(int32_t auto_repeat_interval)
Gets the auto repeat interval.
Definition: button.h:101
virtual button & auto_repeat_delay(int32_t auto_repeat_delay)
Gets the auto repeat delay.
Definition: button.h:89
virtual forms::auto_size_mode auto_size_mode() const
Gets the mode by which the button automatically resizes itself.
Definition: button.h:109
drawing::size measure_control() const override
Measure this control.
virtual int32_t auto_repeat_delay() const
Gets the auto repeat delay.
Definition: button.h:85
virtual button & auto_size_mode(forms::auto_size_mode value)
Sets the mode by which the button automatically resizes itself.
void on_mouse_up(const mouse_event_args &e) override
Raises the control::mouse_up event.
Definition: button.h:154
void on_mouse_leave(const event_args &e) override
Raises the control::mouse_leave event.
Definition: button.h:149
button()
Initializes a new instance of the button class.
Definition: button.h:58
void on_mouse_down(const mouse_event_args &e) override
Raises the control::mouse_down event.
Definition: button.h:137
void notify_default(bool value) override
Notifies a control that it is the default button so that its appearance and behavior is adjusted acco...
control & dialog_result(forms::dialog_result dialog_result) override
Sets the value returned to the parent form when the button is clicked.
void on_enabled_changed(const event_args &e) override
Raises the control::enabled_changed event.
Definition: button.h:128
Defines the base class for controls, which are components with visual representation.
Definition: control.h:67
virtual bool enabled() const
Gets a value indicating whether the control can respond to user interaction.
Definition: control.h:448
Allows a control to act like a button on a form.
Definition: ibutton_control.h:22
Provides data for the xtd::forms::control::mouse_up, xtd::forms::control::mouse_down,...
Definition: mouse_event_args.h:29
Provides data for the paint event.
Definition: paint_event_args.h:26
Implements a timer that raises an event at user-defined intervals. This timer is optimized for use in...
Definition: timer.h:29
Contains xtd::forms::dialog_result enum class.
Contains xtd::environment class.
#define forms_export_
Define shared library export.
Definition: forms_export.h:13
@ e
The E key.
push_button_state
Specifies the visual state of a button that is drawn with visual styles.
Definition: push_button_state.h:20
dialog_result
Specifies identifiers to indicate the return value of a dialog box.
Definition: dialog_result.h:39
auto_size_mode
Specifies how a control will behave when its auto_size property is enabled.
Definition: auto_size_mode.h:18
@ default_state
The button has the default appearance.
@ normal
The button has the normal appearance.
@ system
The appearance of the control is determined by the user's operating system.
Contains xtd::forms::ibutton_control interface.
The xtd::forms namespace contains classes for creating Windows-based applications that take full adva...
Definition: about_box.h:13
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition: system_report.h:17
Contains xtd::forms::visual_styles::push_button_state enum class.
Contains xtd::forms::timer component.