summaryrefslogtreecommitdiff
path: root/examples/module/ftk_label
diff options
context:
space:
mode:
Diffstat (limited to 'examples/module/ftk_label')
-rw-r--r--examples/module/ftk_label/SConscript34
-rw-r--r--examples/module/ftk_label/demo_label.c93
2 files changed, 127 insertions, 0 deletions
diff --git a/examples/module/ftk_label/SConscript b/examples/module/ftk_label/SConscript
new file mode 100644
index 0000000000..95137e573b
--- /dev/null
+++ b/examples/module/ftk_label/SConscript
@@ -0,0 +1,34 @@
+Import('env')
+Import('projects')
+Import('RTT_ROOT')
+Import('rtconfig')
+Import('TARGET')
+
+RTMLINKER = RTT_ROOT + '/tools/rtmlinker.exe '
+
+# group definitions
+group = {}
+group['CCFLAGS'] = ''
+group['CPPPATH'] = [RTT_ROOT + '/include',
+ RTT_ROOT + '/examples/module',
+ RTT_ROOT + '/components/external/ftk/ftk/src']
+group['CPPDEFINES'] = ''
+
+target = 'label.so'
+POST_ACTION = RTMLINKER + ' -l ' + TARGET + ' -o label.mo ' + '$TARGET'
+
+# add group to project list
+projects.append(group)
+
+src_local = Split("""
+demo_label.c
+""")
+
+env.Append(CCFLAGS = group['CCFLAGS'])
+env.Append(CPPPATH = group['CPPPATH'])
+env.Append(CPPDEFINES = group['CPPDEFINES'])
+module_env = env.Clone(CCFLAGS = ' -mcpu=arm920t -O0 -fPIC')
+module_env.Replace(LINKFLAGS = '-z max-page-size=0x4 -shared -fPIC -e main -nostdlib -s')
+module_env.Program(target, src_local)
+module_env.AddPostAction(target, POST_ACTION)
+
diff --git a/examples/module/ftk_label/demo_label.c b/examples/module/ftk_label/demo_label.c
new file mode 100644
index 0000000000..bc293e26eb
--- /dev/null
+++ b/examples/module/ftk_label/demo_label.c
@@ -0,0 +1,93 @@
+#include "ftk.h"
+
+typedef struct _TimerInfo
+{
+ int times;
+ FtkWidget* label;
+}TimerInfo;
+
+static Ret timeout(void* ctx)
+{
+ TimerInfo* info = ctx;
+ char buffer[32] = {0};
+ if(info->times > 0)
+ {
+ snprintf(buffer, sizeof(buffer), "Quit after %d seconds", info->times);
+ ftk_widget_set_text(info->label, buffer);
+ info->times--;
+
+ return RET_OK;
+ }
+ else
+ {
+ ftk_widget_unref(ftk_widget_toplevel(info->label));
+ ftk_logd("%s: timeout and quit.\n", __func__);
+ FTK_FREE(info);
+ FTK_QUIT();
+ return RET_REMOVE;
+ }
+}
+
+#ifdef FTK_AS_PLUGIN
+#include "ftk_app_demo.h"
+FTK_HIDE int FTK_MAIN(int argc, char* argv[]);
+FtkApp* ftk_app_demo_label_create()
+{
+ return ftk_app_demo_create(_("label"), ftk_main);
+}
+#else
+#define FTK_HIDE extern
+#endif /*FTK_AS_PLUGIN*/
+
+FTK_HIDE int FTK_MAIN(int argc, char* argv[])
+{
+ int width = 0;
+ int height = 0;
+ FtkGc gc = {.mask = FTK_GC_BG};
+ TimerInfo* info = NULL;
+
+ FTK_INIT(argc, argv);
+ info = (TimerInfo*)FTK_ZALLOC(sizeof(TimerInfo));
+ info->times = 5;
+
+ FtkSource* timer = ftk_source_timer_create(1000, timeout, info);
+ FtkWidget* win = ftk_app_window_create();
+
+ width = ftk_widget_width(win);
+ height = ftk_widget_height(win);
+
+ FtkWidget* label = ftk_label_create(win, 10, 10, width - 20, 20);
+ ftk_widget_set_text(label, "中文文本");
+
+ label = ftk_label_create(win, 10, 40, width - 20, 20);
+ ftk_widget_set_text(label, "English Text(center)");
+ ftk_label_set_alignment(label, FTK_ALIGN_CENTER);
+ assert(strcmp(ftk_widget_get_text(label), "English Text(center)") == 0);
+
+ label = ftk_label_create(win, 10, 70, width - 20, 20);
+ ftk_widget_set_text(label, "English Text(right)");
+ ftk_label_set_alignment(label, FTK_ALIGN_RIGHT);
+
+ gc.bg.a = 0xff;
+ gc.bg.r = 0xF0;
+ gc.bg.g = 0xF0;
+ gc.bg.b = 0x80;
+ label = ftk_label_create(win, 10, height/2, width - 20, 120);
+ ftk_widget_set_gc(label, FTK_WIDGET_INSENSITIVE, &gc);
+ ftk_widget_unset_attr(label, FTK_ATTR_TRANSPARENT);
+ ftk_widget_set_text(label, "中英文混合多行文本显示:the linux mobile development.带有背景颜色。");
+
+ label = ftk_label_create(win, 50, height/2-30, width, 20);
+ info->label = label;
+
+ ftk_widget_set_text(win, "label demo");
+ ftk_widget_show_all(win, 1);
+
+ ftk_widget_set_attr(win, FTK_ATTR_IGNORE_CLOSE);
+ ftk_main_loop_add_source(ftk_default_main_loop(), timer);
+
+ FTK_RUN();
+
+ return 0;
+}
+