summaryrefslogtreecommitdiff
path: root/rtgui/include
diff options
context:
space:
mode:
Diffstat (limited to 'rtgui/include')
-rw-r--r--rtgui/include/rtgui/rtgui_theme.h8
-rw-r--r--rtgui/include/rtgui/widgets/checkbox.h36
-rw-r--r--rtgui/include/rtgui/widgets/progressbar.h41
-rw-r--r--rtgui/include/rtgui/widgets/radiobox.h36
-rw-r--r--rtgui/include/rtgui/widgets/slider.h39
-rw-r--r--rtgui/include/rtgui/widgets/staticline.h34
-rw-r--r--rtgui/include/rtgui/widgets/textbox.h12
-rw-r--r--rtgui/include/rtgui/widgets/widget.h6
8 files changed, 206 insertions, 6 deletions
diff --git a/rtgui/include/rtgui/rtgui_theme.h b/rtgui/include/rtgui/rtgui_theme.h
index 0efde47cad..9f0ddba0e8 100644
--- a/rtgui/include/rtgui/rtgui_theme.h
+++ b/rtgui/include/rtgui/rtgui_theme.h
@@ -21,6 +21,10 @@
#include <rtgui/widgets/button.h>
#include <rtgui/widgets/textbox.h>
#include <rtgui/widgets/iconbox.h>
+#include <rtgui/widgets/checkbox.h>
+#include <rtgui/widgets/slider.h>
+#include <rtgui/widgets/progressbar.h>
+#include <rtgui/widgets/staticline.h>
#ifdef __cplusplus
extern "C" {
@@ -33,6 +37,10 @@ void rtgui_theme_draw_button(rtgui_button_t* btn);
void rtgui_theme_draw_label(rtgui_label_t* label);
void rtgui_theme_draw_textbox(rtgui_textbox_t* box);
void rtgui_theme_draw_iconbox(rtgui_iconbox_t* iconbox);
+void rtgui_theme_draw_checkbox(rtgui_checkbox_t* checkbox);
+void rtgui_theme_draw_slider(struct rtgui_slider* slider);
+void rtgui_theme_draw_progressbar(struct rtgui_progressbar* bar);
+void rtgui_theme_draw_staticline(struct rtgui_staticline* staticline);
rt_uint16_t rtgui_theme_get_selected_height(void);
void rtgui_theme_draw_selected(struct rtgui_dc* dc, rtgui_rect_t *rect);
diff --git a/rtgui/include/rtgui/widgets/checkbox.h b/rtgui/include/rtgui/widgets/checkbox.h
new file mode 100644
index 0000000000..0498435a4f
--- /dev/null
+++ b/rtgui/include/rtgui/widgets/checkbox.h
@@ -0,0 +1,36 @@
+#ifndef __RTGUI_CHECKBOX_H__
+#define __RTGUI_CHECKBOX_H__
+
+#include <rtgui/rtgui.h>
+#include <rtgui/widgets/widget.h>
+#include <rtgui/widgets/label.h>
+
+/** Gets the type of a button */
+#define RTGUI_CHECKBOX_TYPE (rtgui_checkbox_type_get())
+/** Casts the object to an rtgui_button */
+#define RTGUI_CHECKBOX(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_CHECKBOX_TYPE, rtgui_checkbox))
+/** Checks if the object is an rtgui_button */
+#define RTGUI_IS_CHECKBOX(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_CHECKBOX_TYPE))
+
+#define RTGUI_CHECKBOX_STATUS_CHECKED 0
+#define RTGUI_CHECKBOX_STATUS_UNCHECKED 1
+
+struct rtgui_checkbox
+{
+ /* inherit from label */
+ struct rtgui_label parent;
+
+ /* check box status */
+ rt_uint8_t status_down;
+};
+typedef struct rtgui_checkbox rtgui_checkbox_t;
+
+rtgui_type_t *rtgui_checkbox_type_get(void);
+
+rtgui_checkbox_t* rtgui_checkbox_create(unsigned char* text);
+void rtgui_checkbox_destroy(rtgui_checkbox_t* checkbox);
+
+void rtgui_checkbox_ondraw(rtgui_checkbox_t* checkbox);
+rt_bool_t rtgui_checkbox_event_handler(struct rtgui_widget* widget, struct rtgui_event* event);
+
+#endif
diff --git a/rtgui/include/rtgui/widgets/progressbar.h b/rtgui/include/rtgui/widgets/progressbar.h
new file mode 100644
index 0000000000..cf3c2ce4c5
--- /dev/null
+++ b/rtgui/include/rtgui/widgets/progressbar.h
@@ -0,0 +1,41 @@
+#ifndef __RTGUI_PROGRESSBAR_H__
+#define __RTGUI_PROGRESSBAR_H__
+
+#include <rtgui/rtgui.h>
+#include <rtgui/widgets/widget.h>
+
+/** Gets the type of a progressbar */
+#define RTGUI_PROGRESSBAR_TYPE (rtgui_progressbar_type_get())
+/** Casts the object to a rtgui_progressbar */
+#define RTGUI_PROGRESSBAR(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_PROGRESSBAR_TYPE, rtgui_progressbar_t))
+/** Checks if the object is a rtgui_progressbar */
+#define RTGUI_IS_PROGRESSBAR(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_PROGRESSBAR_TYPE))
+
+#define DEFAULT_WIDTH 100
+#define DEFAULT_HEIGHT 20
+
+struct rtgui_progressbar
+{
+ struct rtgui_widget parent;
+
+ int orientation;
+
+ int range;
+ int position;
+};
+typedef struct rtgui_progressbar rtgui_progressbar_t;
+
+rtgui_type_t *rtgui_progressbar_type_get(void);
+
+struct rtgui_progressbar* rtgui_progressbar_create(int orientation, int range, rtgui_rect_t* r);
+void rtgui_progressbar_destroy(struct rtgui_progressbar* p_bar);
+
+rt_bool_t rtgui_progressbar_event_handler(struct rtgui_widget* widget,
+ struct rtgui_event* event);
+
+void rtgui_progressbar_set_value(struct rtgui_progressbar *p_bar, int value);
+int rtgui_progressbar_get_value(struct rtgui_progressbar *p_bar);
+void rtgui_progressbar_set_range(struct rtgui_progressbar *p_bar, int range);
+int rtgui_progressbar_get_range(struct rtgui_progressbar *p_bar);
+
+#endif
diff --git a/rtgui/include/rtgui/widgets/radiobox.h b/rtgui/include/rtgui/widgets/radiobox.h
new file mode 100644
index 0000000000..dfd563ff9e
--- /dev/null
+++ b/rtgui/include/rtgui/widgets/radiobox.h
@@ -0,0 +1,36 @@
+#ifndef __RTGUI_RADIOBOX_H__
+#define __RTGUI_RADIOBOX_H__
+
+#include <rtgui/rtgui.h>
+#include <rtgui/widgets/widget.h>
+
+/** Gets the type of a radiobox */
+#define RTGUI_RADIOBOX_TYPE (rtgui_radiobox_type_get())
+/** Casts the object to an rtgui_radiobox */
+#define RTGUI_SLIDER(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_RADIOBOX_TYPE, rtgui_radiobox_t))
+/** Checks if the object is an rtgui_radiobox */
+#define RTGUI_IS_SLIDER(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_RADIOBOX_TYPE))
+
+struct rtgui_radiobox
+{
+ struct rtgui_widget parent;
+
+ /* widget private data */
+ int orient;
+
+ char* items;
+ int item_count, item_selection;
+};
+typedef struct rtgui_radiobox rtgui_radiobox_t;
+
+rtgui_type_t *rtgui_radiobox_type_get(void);
+
+struct rtgui_radiobox* rtgui_radiobox_create(int orient, char** radio_items, int number);
+void rtgui_radiobox_destroy(struct rtgui_radiobox* radiobox);
+
+void rtgui_radiobox_set_selection(struct rtgui_radiobox* radiobox, int selection);
+int rtgui_radiobox_get_selection(struct rtgui_radiobox* radiobox);
+
+rt_bool_t rtgui_radiobox_event_handler(struct rtgui_widget* widget, struct rtgui_event* event);
+
+#endif
diff --git a/rtgui/include/rtgui/widgets/slider.h b/rtgui/include/rtgui/widgets/slider.h
new file mode 100644
index 0000000000..d657790899
--- /dev/null
+++ b/rtgui/include/rtgui/widgets/slider.h
@@ -0,0 +1,39 @@
+#ifndef __RTGUI_SLIDER_H__
+#define __RTGUI_SLIDER_H__
+
+#include <rtgui/rtgui.h>
+#include <rtgui/widgets/widget.h>
+
+/** Gets the type of a slider */
+#define RTGUI_SLIDER_TYPE (rtgui_slider_type_get())
+/** Casts the object to an rtgui_slider */
+#define RTGUI_SLIDER(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_SLIDER_TYPE, rtgui_slider_t))
+/** Checks if the object is an rtgui_slider */
+#define RTGUI_IS_SLIDER(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_SLIDER_TYPE))
+
+struct rtgui_slider
+{
+ struct rtgui_widget parent;
+
+ /* widget private data */
+ rt_size_t min, max, value, ticks;
+ rt_size_t thumb_width;
+
+ int orient;
+};
+typedef struct rtgui_slider rtgui_slider_t;
+
+rtgui_type_t *rtgui_slider_type_get(void);
+
+struct rtgui_slider* rtgui_slider_create(rt_size_t min, rt_size_t max, int orient);
+void rtgui_slider_destroy(struct rtgui_slider* slider);
+
+rt_bool_t rtgui_slider_event_handler(struct rtgui_widget* widget, struct rtgui_event* event);
+
+void rtgui_slider_set_range(struct rtgui_slider* slider, rt_size_t min, rt_size_t max);
+void rtgui_slider_set_value(struct rtgui_slider* slider, rt_size_t value);
+void rtgui_slider_set_orientation(struct rtgui_slider* slider, int orientation);
+
+rt_size_t rtgui_slider_get_value(struct rtgui_slider* slider);
+
+#endif
diff --git a/rtgui/include/rtgui/widgets/staticline.h b/rtgui/include/rtgui/widgets/staticline.h
new file mode 100644
index 0000000000..287f57410e
--- /dev/null
+++ b/rtgui/include/rtgui/widgets/staticline.h
@@ -0,0 +1,34 @@
+#ifndef __RTGUI_STATICLINE__H__
+#define __RTGUI_STATICLINE__H__
+
+#include <rtgui/rtgui.h>
+#include <rtgui/widgets/widget.h>
+
+/*
+ * the static line widget
+ */
+
+/** Gets the type of a staticline */
+#define RTGUI_STATICLINE_TYPE (rtgui_staticline_type_get())
+/** Casts the object to an rtgui_staticline */
+#define RTGUI_STATICLINE(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_STATICLINE_TYPE, rtgui_staticline_t))
+/** Checks if the object is an rtgui_staticline */
+#define RTGUI_IS_STATICLINE(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_STATICLINE_TYPE))
+
+struct rtgui_staticline
+{
+ /* inherit from widget */
+ struct rtgui_widget parent;
+
+ int orientation;
+};
+typedef struct rtgui_staticline rtgui_staticline_t;
+
+rtgui_staticline_t *rtgui_staticline_create(int orientation);
+void rtgui_staticline_destroy(rtgui_staticline_t* staticline);
+
+rt_bool_t rtgui_staticline_event_handler(struct rtgui_widget* widget, struct rtgui_event* event);
+void rtgui_staticline_set_orientation(rtgui_staticline_t* staticline, int orientation);
+
+#endif
+
diff --git a/rtgui/include/rtgui/widgets/textbox.h b/rtgui/include/rtgui/widgets/textbox.h
index 5ee22ca4d3..95259e9b0e 100644
--- a/rtgui/include/rtgui/widgets/textbox.h
+++ b/rtgui/include/rtgui/widgets/textbox.h
@@ -27,8 +27,10 @@
#define RTGUI_TEXTBOX_DEFAULT_WIDTH 80
#define RTGUI_TEXTBOX_DEFAULT_HEIGHT 20
-#define RTGUI_TEXTBOX_SINGLE 0x00
-#define RTGUI_TEXTBOX_MULTI 0x00
+#define RTGUI_TEXTBOX_SINGLE 0x00
+#define RTGUI_TEXTBOX_MULTI 0x01
+#define RTGUI_TEXTBOX_CARET_SHOW 0x10
+#define RTGUI_TEXTBOX_CARET_HIDE 0x00
struct rtgui_textbox_line
{
@@ -42,11 +44,11 @@ struct rtgui_textbox
/* inherit from widget */
struct rtgui_widget parent;
- /* text box type */
- rt_ubase_t type;
+ /* text box flag */
+ rt_uint8_t flag;
/* current line and position */
- rt_size_t line, line_begin, position, line_length;
+ rt_uint16_t line, line_begin, position, line_length;
rt_uint8_t* text;
rt_size_t font_width;
diff --git a/rtgui/include/rtgui/widgets/widget.h b/rtgui/include/rtgui/widgets/widget.h
index 56fbe650d6..8f71629031 100644
--- a/rtgui/include/rtgui/widgets/widget.h
+++ b/rtgui/include/rtgui/widgets/widget.h
@@ -42,7 +42,7 @@ extern "C" {
#define RTGUI_WIDGET_UNFOCUS(w) (w)->flag &= ~RTGUI_WIDGET_FLAG_FOCUS
#define RTGUI_WIDGET_FOCUS(w) (w)->flag |= RTGUI_WIDGET_FLAG_FOCUS
-#define RTGUI_WIDGET_IS_FOCUS(w) ((w)->flag & RTGUI_WIDGET_FLAG_FOCUS)
+#define RTGUI_WIDGET_IS_FOCUSED(w) ((w)->flag & RTGUI_WIDGET_FLAG_FOCUS)
#define RTGUI_WIDGET_IS_FOCUSABLE(w) ((w)->flag & RTGUI_WIDGET_FLAG_FOCUSABLE)
@@ -195,6 +195,10 @@ void rtgui_widget_show(rtgui_widget_t* widget);
void rtgui_widget_hide(rtgui_widget_t* widget);
void rtgui_widget_update(rtgui_widget_t* widget);
+/* get parent color */
+rtgui_color_t rtgui_widget_get_parent_foreground(rtgui_widget_t* widget);
+rtgui_color_t rtgui_widget_get_parent_background(rtgui_widget_t* widget);
+
/* get the next sibling of widget */
rtgui_widget_t* rtgui_widget_get_next_sibling(rtgui_widget_t* widget);
/* get the prev sibling of widget */