Ejemplo n.º 1
0
LCUI_Widget SideBar_AppendItem( LCUI_Widget sidebar, const wchar_t *id,
				const wchar_t *icon, const wchar_t *text )
{
	SideBar *sb;
	SideBarItem *sbi;
	LCUI_Widget w;
	int len = id ? wcslen( id ) : 0;
	wchar_t *new_id = malloc( sizeof( wchar_t )*(len + 1) );
	if( !new_id ) {
		return NULL;
	}
	sb = sidebar->private_data;
	w = LCUIWidget_New( "sidebar-item" );
	sbi = w->private_data;
	id ? wcscpy( new_id, id ) : (new_id[0] = 0, NULL);
	sbi->id ? free( sbi->id ) : 0;
	sbi->id = new_id;
	Widget_Append( sidebar, w );
	TextView_SetTextW( sbi->icon, icon );
	TextView_SetTextW( sbi->text, text );
	Widget_Show( w );
	Widget_Show( sbi->icon );
	Widget_Show( sbi->text );
	LinkedList_Append( &sb->items, sbi );
	return w;
}
Ejemplo n.º 2
0
/** 捕捉键盘按键输入 */
static void StartCatchKey( LCUI_Widget *btn )
{
	if( tip_box ) {
		return;
	}
	/* 创建提示框 */
	tip_box = Widget_New(NULL);
	tip_label = Widget_New("label");
	/* 将label部件添加至提示框中 */
	Widget_Container_Add( tip_box, tip_label );
	/* 设置提示框中显示的文本 */
	Label_TextW( tip_label, TEXT_PLEASE_PRESS_KEY );
	/* 设置提示框位置、尺寸及样式 */
	Widget_SetAlign( tip_label, ALIGN_MIDDLE_CENTER, Pos(0,0) );
	Widget_SetAlign( tip_box, ALIGN_MIDDLE_CENTER, Pos(0,0) );
	Widget_Resize( tip_box, TIPBOX_SIZE );
	Widget_SetBackgroundTransparent( tip_box, FALSE );
	Widget_SetBorder( tip_box, Border(1,BORDER_STYLE_SOLID,RGB(200,200,200)) );
	/* 连接LCUI_KEYDOWN事件,以在键盘按键被按下时进行响应 */
	keyboard_connect_id = LCUISysEvent_Connect( LCUI_KEYDOWN, ProcKeyDown, btn );

	Widget_Show( tip_label );
	Widget_SetModal( tip_box, TRUE );
	Widget_Show( tip_box );
}
Ejemplo n.º 3
0
static void 
Window_TitleBar_Init(LCUI_Widget *titlebar)
/* 功能:初始化窗口标题栏 */
{
	LCUI_Graph img;
	LCUI_TitleBar *t;
	
	Graph_Init(&img);
	t = Widget_NewPrivData(titlebar, sizeof(LCUI_TitleBar));
	t->icon_box = Widget_New("picture_box");
	t->label = Widget_New("label");
	/* 窗口图标和标题文字不可获得焦点,并忽略鼠标点击 */
	t->label->focus = FALSE;
	t->icon_box->focus = FALSE;
	Widget_SetClickableAlpha( t->label, 0, 1 );
	Widget_SetClickableAlpha( t->icon_box, 0, 1 );
	
	Widget_Container_Add(titlebar, t->icon_box);
	Widget_Container_Add(titlebar, t->label);
	
	Widget_Resize(t->icon_box, Size(18,18));
	PictureBox_SetSizeMode(t->icon_box, SIZE_MODE_CENTER);
	
	Widget_Show(t->icon_box);
	Widget_Show(t->label);
	
	Widget_SetAlign(t->icon_box, ALIGN_MIDDLE_LEFT, Pos(0,0));
	Widget_SetAlign(t->label, ALIGN_MIDDLE_LEFT, Pos(2,-2));
}
Ejemplo n.º 4
0
int main(int argc, char*argv[])
/* 主函数,程序的入口 */
{
	LCUI_Init();
	LCUI_Widget *windows[4];
	/* 创建窗口部件 */
	windows[0] = Window_New("主窗口", NULL, Size(320, 240));
	windows[1] = Window_New("子窗口 A", NULL, Size(240, 200));
	windows[2] = Window_New("子窗口 B", NULL, Size(180, 150));
	windows[3] = Window_New("子窗口 C", NULL, Size(150, 100));
	/* 改变风格 */
	Widget_SetStyleID( windows[1], WINDOW_STYLE_PURE_ORANGE );
	Widget_SetStyleID( windows[2], WINDOW_STYLE_PURE_GREEN );
	Widget_SetStyleID( windows[3], WINDOW_STYLE_PURE_RED );
	/* 将子窗口放入主窗口的客户区中 */
	Window_ClientArea_Add( windows[0], windows[1] );
	Window_ClientArea_Add( windows[0], windows[2] );
	Window_ClientArea_Add( windows[0], windows[3] );
	/* 显示它们 */
	Widget_Show(windows[0]); 
	Widget_Show(windows[1]); 
	Widget_Show(windows[2]);
	Widget_Show(windows[3]);
	Widget_Event_Connect( Window_GetCloseButton(windows[0]), EVENT_CLICKED, destroy);
	LCUI_Main(); /* 进入主循环 */ 
	return 0;
}
Ejemplo n.º 5
0
int main(int argc, char **argv)
{
    int i;
    LCUI_Init(0,0,0);
    /* 创建部件 */
    window = Widget_New("window");
    age_label = Widget_New("label");
    button = Button_New("提交");
    age_rb[0] = RadioButton_New("A. 15岁以下");
    age_rb[1] = RadioButton_New("B. 15-20岁");
    age_rb[2] = RadioButton_New("C. 21-25岁");
    age_rb[3] = RadioButton_New("D. 26-30岁");
    age_rb[4] = RadioButton_New("E. 31-40岁");
    age_rb[5] = RadioButton_New("F. 40岁以上");
    /* 设定窗口标题的文本 */
    Window_SetTitleText(window, "测试复选框部件");
    /* 改变尺寸 */
    Widget_Resize(window, Size(320, 240));
    Widget_SetAutoSize( button, FALSE, 0 );
    Widget_Resize(button, Size(60, 25));
    /* 将窗口客户区作为这些部件的容器 */
    Window_ClientArea_Add(window, age_label);
    Window_ClientArea_Add(window, button);
    for(i=0; i<6; i++) {
        Window_ClientArea_Add(window, age_rb[i]);
    }
    /* 调整部件的布局*/
    Widget_SetAlign(age_label, ALIGN_MIDDLE_CENTER, Pos(0,-40));
    Widget_SetAlign(button, ALIGN_MIDDLE_CENTER, Pos(0,60));
    Widget_SetAlign(age_rb[0], ALIGN_MIDDLE_LEFT, Pos(5,-20));
    Widget_SetAlign(age_rb[1], ALIGN_MIDDLE_LEFT, Pos(100,-20));
    Widget_SetAlign(age_rb[2], ALIGN_MIDDLE_LEFT, Pos(200,-20));
    Widget_SetAlign(age_rb[3], ALIGN_MIDDLE_LEFT, Pos(5,0));
    Widget_SetAlign(age_rb[4], ALIGN_MIDDLE_LEFT, Pos(100,0));
    Widget_SetAlign(age_rb[5], ALIGN_MIDDLE_LEFT, Pos(200,0));
    Label_Text(age_label, "你的年龄段是?");

    RadioButton_CreateMutex(age_rb[0], age_rb[1]);
    RadioButton_CreateMutex(age_rb[0], age_rb[2]);
    RadioButton_CreateMutex(age_rb[0], age_rb[3]);
    RadioButton_CreateMutex(age_rb[0], age_rb[4]);
    RadioButton_CreateMutex(age_rb[0], age_rb[5]);

    /* 显示部件 */
    Widget_Show(age_label);
    Widget_Show(button);
    Widget_Show(age_rb[0]);
    for(i=0; i<6; ++i) {
        Widget_Show(age_rb[i]);
    }
    Widget_Show(window);
    Widget_ConnectEvent( button, EVENT_CLICKED, view_result );
    Widget_ConnectEvent( Window_GetCloseButton(window), EVENT_CLICKED, destroy );
    LCUI_Main();
    return 0;
}
Ejemplo n.º 6
0
int main( int argc, char **argv )
{
    int i;

    LCUI_Init(0,0,0);
    /* 创建部件 */
    window  = Widget_New("window");
    label   = Widget_New("label");
    button	= Widget_New("button");
    for(i=0; i<5; ++i) {
        checkbox[i] = Widget_New("check_box");
    }
    CheckBox_TextW( checkbox[0], L"编程" );
    CheckBox_TextW( checkbox[1], L"电影" );
    CheckBox_TextW( checkbox[2], L"动漫" );
    CheckBox_TextW( checkbox[3], L"音乐" );
    CheckBox_TextW( checkbox[4], L"睡觉" );

    Button_TextW( button, L"提交" );
    Window_SetTitleTextW( window, L"测试复选框部件") ;
    window->resize(window, Size(320, 240));
    /* 禁用按钮部件的自动尺寸调整,因为要自定义尺寸 */
    Widget_SetAutoSize( button, FALSE, 0 );
    Widget_Resize(button, Size(60, 25));
    /* 将窗口客户区作为这些部件的容器 */
    Window_ClientArea_Add(window, label);
    Window_ClientArea_Add(window, button);
    for(i=0; i<5; i++) {
        Window_ClientArea_Add(window, checkbox[i]);
    }
    /* 调整部件的布局*/
    Widget_SetAlign(label, ALIGN_MIDDLE_CENTER, Pos(0,-20));
    Widget_SetAlign(button, ALIGN_MIDDLE_CENTER, Pos(0,60));
    Widget_SetAlign(checkbox[0], ALIGN_MIDDLE_CENTER, Pos(-120 ,5));
    Widget_SetAlign(checkbox[1], ALIGN_MIDDLE_CENTER, Pos(-60 ,5));
    Widget_SetAlign(checkbox[2], ALIGN_MIDDLE_CENTER, Pos(0 ,5));
    Widget_SetAlign(checkbox[3], ALIGN_MIDDLE_CENTER, Pos(60 ,5));
    Widget_SetAlign(checkbox[4], ALIGN_MIDDLE_CENTER, Pos(120 ,5));

    Label_TextW(label, L"你都有哪些兴趣爱好?\n");
    /* 显示部件 */
    Widget_Show(label);
    Widget_Show(button);
    for(i=0; i<5; ++i) {
        Widget_Show(checkbox[i]);
    }
    Widget_Show(window);
    /* 为按钮部件关联点击事件,被关联的函数是view_result,它会在点击按钮后被调用 */
    Widget_ConnectEvent( button, EVENT_CLICKED, view_result );
    Widget_ConnectEvent( Window_GetCloseButton(window), EVENT_CLICKED, destroy );
    return LCUI_Main();
}
Ejemplo n.º 7
0
Archivo: mora.c Proyecto: yydaor/LCUI
static void
Show_GUI( void )
{
	Widget_Show( btn_s );
	Widget_Show( btn_j );
	Widget_Show( btn_b );
	Widget_Show( label );
	Widget_Show( btn_area );
	Widget_Show( l_vs );
	Widget_Show( me_pic_box );
	Widget_Show( cpu_pic_box );
	Widget_Show( btn_next );
	Widget_Show( window );
}
Ejemplo n.º 8
0
int main(void) 
{
	int i; 
	char text[5][10] = { "蓝色","绿色", "红色", "橙色", "紫色" };
	LCUI_Pos offset_pos[5]={{-120,0},{-60,0},{0,0},{60,0},{120,0}};	

	LCUI_Init();
	
	main_window = Widget_New( "window" ); 
	btn_ok = Widget_New( "button" );
	label = Widget_New( "label" );
	/* 设置窗口的尺寸以及标题栏文本 */
	Widget_Resize( main_window, Size(320, 240) ); 
	Window_SetTitleText( main_window, "测试窗口的风格切换" ); 
	/* 创建5个单选框部件 */
	for(i=0; i<5; ++i) {
		rdbtn[i] = Widget_New( "radio_button" );
		Window_ClientArea_Add( main_window, rdbtn[i] );
		Widget_SetAlign( rdbtn[i], ALIGN_MIDDLE_CENTER, offset_pos[i] );
		RadioButton_Text( rdbtn[i], text[i] );
		Widget_Show( rdbtn[i] );
	}
	/* 为单选框建立互斥关系 */
	RadioButton_CreateMutex(rdbtn[0], rdbtn[1]);
	RadioButton_CreateMutex(rdbtn[0], rdbtn[2]);
	RadioButton_CreateMutex(rdbtn[0], rdbtn[3]);
	RadioButton_CreateMutex(rdbtn[0], rdbtn[4]);
	RadioButton_SetOn( rdbtn[0] );
	/* 禁用按钮部件的自动尺寸调整 */
	Widget_SetAutoSize( btn_ok, FALSE, 0 );
	Widget_Resize( btn_ok, Size(100, 30) );
	/* 将部件加入窗口客户区 */
	Window_ClientArea_Add( main_window, btn_ok );
	Window_ClientArea_Add( main_window, label );
	/* 设置部件的布局 */
	Widget_SetAlign( btn_ok, ALIGN_MIDDLE_CENTER, Pos(0,50) );
	Widget_SetAlign( label, ALIGN_MIDDLE_CENTER, Pos(0,-50) ); 
	/* 设置部件的文本 */
	Button_Text( btn_ok, "应用" ); 
	Label_Text( label, "选择窗口配色:" );
	/* 为按钮的点击事件关联回调函数 */
	Widget_Event_Connect( btn_ok, EVENT_CLICKED, switch_style );
	Widget_Event_Connect( Window_GetCloseButton(main_window), EVENT_CLICKED, destroy );
	/* 显示部件 */
	Widget_Show( btn_ok );
	Widget_Show( label );
	Widget_Show( main_window );
	/* 进入主循环 */
	return LCUI_Main(); 
}
Ejemplo n.º 9
0
void GameWindow_InitLicenseWindow(void)
{
	window = Widget_New("window");
	label_license = Widget_New("label");
	textbox_license = Widget_New("text_box");
	box = Widget_New(NULL);
	btn_ok = Widget_New("button");

	Window_ClientArea_Add( window, label_license );
	Window_ClientArea_Add( window, box );
	Window_ClientArea_Add( window, btn_ok );
	Widget_Container_Add( box, textbox_license );
	
	Widget_SetBackgroundColor( label_license, RGB(255,255,255) );
	Widget_SetBackgroundTransparent( label_license, FALSE );
	
	Widget_SetAlign( label_license, ALIGN_TOP_CENTER, Pos(0,0) );
	Widget_SetAlign( box, ALIGN_TOP_CENTER, Pos(0,8) );
	Widget_SetAlign( btn_ok, ALIGN_BOTTOM_CENTER, Pos(0,-5) );

	Label_TextW( label_license, TEXT_LICENSE );
	Button_TextW( btn_ok, TEXT_OK );
	TextBox_SetAutoWrap( textbox_license, TRUE );
	TextBox_SetMultiline( textbox_license, TRUE );
	TextBox_SetReadOnly( textbox_license, TRUE );
	TextBox_SetUsingStyleTags( textbox_license, TRUE );
	TextBox_TextW( textbox_license, license_text );
	TextBox_ShowCursor( textbox_license, FALSE );

	Widget_SetStyleID( window, WINDOW_STYLE_LINE );
	Widget_SetPadding( Window_GetClientArea(window), Padding(10,10,10,10) );
	Widget_SetAutoSize( btn_ok, FALSE, 0 );

	Widget_SetBorder( box, Border(1,BORDER_STYLE_SOLID,RGB(200,200,200)) );
	Widget_SetPadding( box, Padding(10,10,10,10) );
	Widget_SetSize( box, "100%", "280px" );
	Widget_SetSize( textbox_license, "100%", "100%" );

	Widget_Resize( window, WINDOW_SIZE );
	Widget_Resize( btn_ok, BTN_SIZE );

	Widget_ConnectEvent( btn_ok, EVENT_CLICKED, btn_ok_on_clicked );

	Widget_Show( textbox_license );
	Widget_Show( box );
	Widget_Show( label_license );
	Widget_Show( btn_ok );
}
Ejemplo n.º 10
0
int main(int argc, char **argv)
{
	int i; 
	LCUI_Pos offset;
	wchar_t text[3][40] = { L"默认模式",L"全屏模式,800x600 分辨率", L"窗口模式,800x600 窗口"};
	LCUI_Init(0,0,0);
	
	main_window = Widget_New( "window" ); 
	btn_ok = Widget_New( "button" );
	label = Widget_New( "label" );
	/* 设置窗口的尺寸以及标题栏文本 */
	Widget_Resize( main_window, Size(320, 240) ); 
	Window_SetTitleTextW( main_window, L"测试视频模式的切换" ); 
	offset.x = 20;
	/* 创建3个单选框部件 */
	for(offset.y=-22,i=0; i<3; ++i,offset.y+=22) {
		rdbtn[i] = Widget_New( "radio_button" );
		Window_ClientArea_Add( main_window, rdbtn[i] );
		Widget_SetAlign( rdbtn[i], ALIGN_MIDDLE_LEFT, offset );
		RadioButton_TextW( rdbtn[i], text[i] );
		Widget_Show( rdbtn[i] );
	}
	/* 为单选框建立互斥关系 */
	RadioButton_CreateMutex(rdbtn[0], rdbtn[1]);
	RadioButton_CreateMutex(rdbtn[0], rdbtn[2]);
	RadioButton_SetOn( rdbtn[0] );
	/* 禁用按钮部件的自动尺寸调整 */
	Widget_SetAutoSize( btn_ok, FALSE, 0 );
	Widget_Resize( btn_ok, Size(100, 30) );
	/* 将部件加入窗口客户区 */
	Window_ClientArea_Add( main_window, btn_ok );
	Window_ClientArea_Add( main_window, label );
	/* 设置部件的布局 */
	Widget_SetAlign( btn_ok, ALIGN_MIDDLE_CENTER, Pos(0,70) );
	Widget_SetAlign( label, ALIGN_MIDDLE_CENTER, Pos(0,-50) ); 
	/* 设置部件的文本 */
	Button_TextW( btn_ok, L"应用" ); 
	Label_TextW( label, L"选择视频模式:" );
	/* 为按钮的点击事件关联回调函数 */
	Widget_ConnectEvent( btn_ok, EVENT_CLICKED, switch_style );
	Widget_ConnectEvent( Window_GetCloseButton(main_window), EVENT_CLICKED, destroy );
	/* 显示部件 */
	Widget_Show( btn_ok );
	Widget_Show( label );
	Widget_Show( main_window );
	/* 进入主循环 */
	return LCUI_Main(); 
}
Ejemplo n.º 11
0
int main(int argc, char **argv)
{
	LCUI_Widget *window;
	/* 载入图像资源 */
	LoadIMG();
	/* 初始化LCUI */
	LCUI_Init(350,280,0);
	/* 创建窗口 */
	window = Widget_New("window");
	/* 设置窗口背景色 */
	Widget_SetBackgroundColor( window, RGB(255,255,255) );
	/* 调整窗口尺寸 */
	Widget_Resize( window, Size(320, 240) );
	/* 设置窗口为线条边框风格 */
	Widget_SetStyleID( window, WINDOW_STYLE_NONE );
	/* 将界面创建至窗口内 */
	CreateGUI( window );
	/* 设置定时器,用于定时更新时间显示 */
	LCUITimer_Set( 1000, UpdateTimeView, NULL, TRUE );
	/* 设置定时器,用于更新滑块的位置 */
	LCUITimer_Set( 20, PicBtn_UpdatePos, NULL, TRUE );
	/* 显示窗口 */
	Widget_Show( window );
	/* 在LCUI退出时释放图像资源 */
	LCUIApp_AtQuit( FreeIMG );
	return LCUI_Main();
}
Ejemplo n.º 12
0
TextBox_Cursor_Update( LCUI_Widget *widget )
/* 更新文本框的光标,返回该光标的像素坐标 */
{
	LCUI_Pos pixel_pos;
	LCUI_Widget *cursor;
	LCUI_TextLayer *layer;
	LCUI_TextBox *textbox;
	LCUI_Size size;
	
	textbox = Widget_GetPrivData( widget );
	layer = TextBox_GetTextLayer( widget );
	/* 如果显示了占位符,那么就复位光标的位置 */
	if( textbox->show_placeholder ) {
		TextLayer_Cursor_SetPos( layer, Pos(0,0) );
	}
	cursor = TextBox_GetCursor( widget );
	size.w = 1;
	size.h = TextLayer_CurRow_GetMaxHeight( layer );
	pixel_pos = TextLayer_Cursor_GetPixelPos( layer );
	Widget_Move( cursor, pixel_pos );
	Widget_Resize( cursor, size );
	/* 若当前文本框处于焦点状态,则让光标在更新时显示 */
	if( active_textbox == widget ) {
		Widget_Show( cursor );
	}
	return pixel_pos;
}
Ejemplo n.º 13
0
Archivo: button.c Proyecto: yydaor/LCUI
/* 初始化按钮部件的数据 */
static void
Button_Init( LCUI_Widget *widget )
{
	int valid_state;
	LCUI_Button *button;
	
	button = WidgetPrivData_New(widget, sizeof(LCUI_Button));
	/* 初始化图像数据 */ 
	Graph_Init(&button->btn_disable);
	Graph_Init(&button->btn_normal);
	Graph_Init(&button->btn_focus);
	Graph_Init(&button->btn_down);
	Graph_Init(&button->btn_over);
	
	valid_state = (WIDGET_STATE_NORMAL | WIDGET_STATE_ACTIVE);
	valid_state |= (WIDGET_STATE_DISABLE | WIDGET_STATE_OVERLAY);
	Widget_SetValidState( widget, valid_state );
	button->label = Widget_New("label");/* 创建label部件 */ 
	/* 将按钮部件作为label部件的容器 */
	Widget_Container_Add(widget, button->label);
	/* label部件居中显示 */
	Widget_SetAlign(button->label, ALIGN_MIDDLE_CENTER, Pos(0,0));
	Widget_Show(button->label); /* 显示label部件 */
	/* 启用自动尺寸调整,以适应内容 */
	Widget_SetAutoSize( widget, TRUE, AUTOSIZE_MODE_GROW_AND_SHRINK);
	Widget_SetStyleID( widget, BUTTON_STYLE_DEFAULT );
	/* 关联EVENT_FOCUSOUT事件,以在按钮失去焦点时重绘按钮 */
	Widget_Event_Connect( widget, EVENT_FOCUSOUT, Button_ProcFocusOut );
}
Ejemplo n.º 14
0
/* 动态改变进度条的数据 */
static void change_progress( void *arg )
{
	char str[15];
	int i, max = 100;
	LCUI_Widget *label;
	LCUI_Widget *widget;
	
	/* 创建一个label部件 */
	widget = (LCUI_Widget *)arg;
	label = Widget_New("label");
	/* 放到进度条里 */
	Widget_Container_Add( widget, label );
	/* 并且居中 */
	Widget_SetAlign( label, ALIGN_MIDDLE_CENTER, Pos(0,0) ); 
	/* 显示它 */
	Widget_Show( label );

	/* 设置最大值 */
	ProgressBar_SetMaxValue(widget, max); 
	for( i=0; i<max; i+=rand()%5 ) {
		/* 设置当前值 */
		ProgressBar_SetValue(widget, i); 
		/* 转换成字符串 */
		sprintf( str, "%d%%", (int)(i*100.0/max) );
		/* 设置显示的文本 */
		Label_Text( label, str );
		/* 暂停0.1秒 */
		LCUI_MSleep(100);
	}
	ProgressBar_SetValue( widget, max );
	Label_Text( label, "100%" );
	LCUIThread_Exit(NULL);
}
Ejemplo n.º 15
0
/*
 * 创建一个部件,作为滚动条的容器
 * 再创建一个部件,作为滚动条
 * 限制滚动条的移动范围
 * */
static void 
ScrollBar_Init( LCUI_Widget *widget )
{
	LCUI_ScrollBar *scrollbar;
	
	scrollbar = WidgetPrivData_New(widget, sizeof(LCUI_ScrollBar));
	scrollbar->data.max_num = 100;
	scrollbar->data.current_num = 100;
	scrollbar->data.max_size = 100;
	scrollbar->data.current_size = 100;
	scrollbar->direction = 0;
	scrollbar->callback_func = NULL;
	
	scrollbar->widget = Widget_New("button");
	/* 禁用部件的自动尺寸调整 */
	Widget_SetAutoSize( scrollbar->widget, FALSE, 0 );
	
	Widget_Container_Add( widget, scrollbar->widget );
	Widget_SetSize( scrollbar->widget, "100%", "100%" );
	Widget_LimitPos( scrollbar->widget, Pos(0,0), Pos(0,0) );
	Widget_SetBorder( widget,
	 Border(1, BORDER_STYLE_SOLID, RGB(100,100,100)) );
	Widget_SetPadding( widget, Padding(1,1,1,1) );
	Widget_SetBackgroundColor( widget, RGB(200,200,200) );
	Widget_SetBackgroundTransparent( widget, FALSE );
	Widget_Show( scrollbar->widget );
	Widget_Event_Connect( scrollbar->widget, EVENT_DRAG, ScrollBar_Drag );
}
Ejemplo n.º 16
0
static void Button_OnInit( LCUI_Widget w )
{
	LCUI_Button *btn;
	btn = Widget_NewPrivateData( w, LCUI_Button );
	btn->text = LCUIWidget_New("textview");
	TextView_SetTextAlign( btn->text, SV_CENTER );
	Widget_Append( w, btn->text );
	Widget_Show( btn->text );
}
Ejemplo n.º 17
0
static void 
show_textbox_cursor( LCUI_Widget *widget )
{
	LCUI_TextBox *tb;
	if( widget == NULL ) {
		return;
	}
	tb = Widget_GetPrivData( widget );
	Widget_Show( tb->cursor );
}
Ejemplo n.º 18
0
int main( int argc, char **argv )
{
	LCUI_Widget w, root, text;
	LCUI_Graph desktop_image;

	InitConsoleWindow();
	LCUI_Init();
	LCUIDisplay_SetMode( LDM_WINDOWED );
	LCUIDisplay_SetSize( 960, 540 );
	w = LCUIWidget_New("debug-widget");
	text = LCUIWidget_New("textview");
	Widget_Append( w, text );
	TextView_SetTextW( text, L"测试文本内容,呵呵达!\nABCDEFG,abcdefg,[color=#ff0000]color font[/color]");
	Widget_Top( w );
	Widget_Show( w );
	Widget_Resize( w, 320, 240 );
	Widget_Move( w, 200, 200 );
	Widget_SetTitleW( w, L"测试" );
	Graph_Init( &desktop_image );
	Graph_LoadImage( "images/background-image.png", &desktop_image );
	root = LCUIWidget_GetRoot();

	Widget_PullStyle( root, WSS_BACKGROUND );
	root->style.background.color = RGB(255,242,223);
	root->style.background.image = desktop_image;
	root->style.background.size.using_value = TRUE;
	root->style.background.size.value = SV_COVER;
	Widget_PushStyle( root, WSS_BACKGROUND );

	Widget_PullStyle( w, WSS_BACKGROUND | WSS_SHADOW | WSS_BORDER );
	w->style.background.color.value = 0xccffffff;
	w->style.background.size.w.scale = 0.50; 
	w->style.background.size.h.px = 200;
	w->style.background.size.w.type = SVT_SCALE;
	w->style.background.size.h.type = SVT_PX;
	w->style.background.size.using_value = FALSE;
	w->style.background.position.using_value = TRUE;
	w->style.background.position.value = SV_BOTTOM_CENTER;
	w->style.shadow.color = ARGB(200,0,122,204);
	w->style.shadow.x = 2;
	w->style.shadow.y = 2;
	w->style.shadow.spread = 0;
	w->style.shadow.blur = 8;
	w->style.border.top.width = 1;
	w->style.border.right.width = 1;
	w->style.border.bottom.width = 1;
	w->style.border.left.width = 1;
	w->style.border.top.color = RGB(0,122,204);
	w->style.border.right.color = RGB(0,122,204);
	w->style.border.bottom.color = RGB(0,122,204);
	w->style.border.left.color = RGB(0,122,204);
	Widget_PushStyle( w, WSS_BACKGROUND | WSS_SHADOW | WSS_BORDER );
	//LCUITimer_Set( 5000, onTimer, NULL, TRUE );
	return LCUI_Main();
}
Ejemplo n.º 19
0
int main( int argc, char*argv[] )
{ 
	LCUI_Graph pic;
	int width = 320, height = 240;
	LCUI_Widget *window, *label, *pic_box, *fore_box;
	
	LCUI_Init();
	Graph_Init(&pic); 
	
	window	 = Widget_New("window");
	label	 = Widget_New("label");
	pic_box	 = Widget_New("picture_box");
	fore_box = Widget_New("picture_box");
	 
	Widget_Resize(fore_box, Size(190, 190));
	Widget_Resize(pic_box, Size(135,135));
	Widget_Resize(window, Size(width, height));
	 
	Window_SetTitleText(window, "头像");
	
	PictureBox_SetSizeMode(pic_box, SIZE_MODE_STRETCH); 
	PictureBox_SetImageFile(pic_box, "image.jpg");
	PictureBox_SetImageFile(fore_box, "border.png");
	 
	Label_Text(label, "蛋疼的头像");
	
	Widget_SetAlign(pic_box, ALIGN_MIDDLE_CENTER, Pos(0, -20));
	Widget_SetAlign(fore_box, ALIGN_MIDDLE_CENTER, Pos(0, -20));
	Widget_SetAlign(label, ALIGN_MIDDLE_CENTER, Pos(0, +75));
	
	Window_ClientArea_Add(window, label);
	Window_ClientArea_Add(window, pic_box); 
	Window_ClientArea_Add(window, fore_box);
	
	Widget_Event_Connect( Window_GetCloseButton(window), EVENT_CLICKED, destroy );
	
	Widget_Show(label);
	Widget_Show(pic_box);
	Widget_Show(fore_box);
	Widget_Show(window); 
	return LCUI_Main(); 
}
Ejemplo n.º 20
0
/* 初始化window部件相关数据 */
static void 
Window_Init( LCUI_Widget *win_p )
{
	LCUI_Widget *titlebar;
	LCUI_Widget *client_area;
	LCUI_Widget *btn_close;
	LCUI_Window *win;
	static LCUI_Graph btn_bg; 
	
	win = (LCUI_Window*)Widget_NewPrivData(win_p, sizeof(LCUI_Window));
	
	titlebar = Widget_New("titlebar"); 
	client_area = Widget_New(NULL); 
	btn_close = Widget_New("button"); 
	titlebar->focus = FALSE;
	Widget_SetFocus( client_area );

	Graph_Init( &btn_bg );
	/* 载入按钮背景 */
	Window_GetCloseButtonBG( &btn_bg );
	/* 显示在左上角 */
	Widget_SetAlign(btn_close, ALIGN_TOP_RIGHT, Pos(0, 0)); 
	/* 将尺寸改成和图片一样 */
	Widget_SetAutoSize( btn_close, FALSE, 0 );
	Widget_Resize(btn_close, Size(44, 20));
	Widget_SetBackgroundImage( btn_close, &btn_bg );
	Widget_SetBackgroundLayout( btn_close, LAYOUT_CENTER );
	/* 没有背景图就填充背景色 */
	Widget_SetBackgroundTransparent( win_p, FALSE );
	/* 部件的风格ID */
	Widget_SetStyleID( win_p, WINDOW_STYLE_PURE_BLUE );
	Widget_SetStyleID( btn_close, BUTTON_STYLE_FLAT );
	/* 保存部件指针 */
	win->client_area = client_area;
	win->titlebar = titlebar;
	win->btn_close = btn_close;
	/* 放入至容器 */
	Widget_Container_Add(titlebar, btn_close);
	Widget_Container_Add(win_p, titlebar);
	Widget_Container_Add(win_p, client_area);
	/* 窗口初始尺寸 */
	Widget_Resize(win_p, Size(100, 50));
	Widget_Show(btn_close);
	/* 关联拖动事件,让鼠标能够拖动标题栏并使窗口移动 */
	Widget_Event_Connect(titlebar, EVENT_DRAG, Window_ExecMove );
	/* 
	 * 由于需要在窗口获得/失去焦点时进行相关处理,因此需要将回调函数 与部件
	 * 的FOCUS_IN和FOCUS_OUT事件 进行关联
	 * */
	Widget_Event_Connect( win_p, EVENT_FOCUSOUT, Window_FocusOut );
	Widget_Event_Connect( win_p, EVENT_FOCUSIN, Window_FocusIn );
	/* 设置窗口部件的初始位置 */
	Widget_SetAlign( win_p, ALIGN_MIDDLE_CENTER, Pos(0,0) );
}
Ejemplo n.º 21
0
int main(int argc, char **argv)
{
	LCUI_Thread thread;
	LCUI_Widget *window, *progbar;
	
	LCUI_Init(800,600,0);
	
	window = Widget_New("window");
	progbar = Widget_New("progress_bar");

	Window_SetTitleTextW(window, L"测试进度条部件");
	Widget_Resize(window, Size(320, 240));
	Window_ClientArea_Add(window, progbar);
	Widget_SetAlign(progbar, ALIGN_MIDDLE_CENTER, Pos(0,0)); 
	Widget_Resize(progbar, Size(300, 25));

	LCUIThread_Create(&thread, change_progress, (void*)progbar);
	Widget_Event_Connect( Window_GetCloseButton(window), EVENT_CLICKED, destroy );

	Widget_Show(progbar);
	Widget_Show(window);
	return LCUI_Main();
}
Ejemplo n.º 22
0
int main(void)
{
	LCUI_Thread t;
	LCUI_Widget *window, *widget;
	
	LCUI_Init();
	window = Widget_New( "window" );
	widget = Widget_New( NULL );
	Window_SetTitleText( window, "测试部件布局-1" );
	Window_ClientArea_Add( window, widget );
	Widget_Resize( widget, Size(120, 120) );
	Widget_Resize( window, Size(320, 240) );
	Widget_SetBackgroundTransparent( widget, FALSE );
	Widget_SetBorder( widget, Border(1, BORDER_STYLE_SOLID, RGB(0,0,0)) );
	Widget_SetBackgroundColor( widget, RGB(255,0,0) );
	
	Widget_Show( widget );
	Widget_Show( window );
	Widget_Event_Connect( Window_GetCloseButton(window), EVENT_CLICKED, destroy );
	LCUIThread_Create( &t, thread, widget );
	
	return LCUI_Main();
}
Ejemplo n.º 23
0
Archivo: clock.c Proyecto: yydaor/LCUI
int main(void)
{
	LCUI_Widget *window;
	LCUI_Thread t;
	
	setenv( "LCUI_FONTFILE", "../../fonts/msyh.ttf", FALSE );
	LCUI_Init();
	window = Widget_New("window");
	Widget_Resize(window, Size(320, 320));
	Window_SetTitleText(window, "时钟");
	LCUIThread_Create(&t, update_clock, (void*)window); 
	Widget_Event_Connect(Window_GetCloseButton(window), EVENT_CLICKED, destroy);
	Widget_Show(window); 
	return LCUI_Main();
}
Ejemplo n.º 24
0
static int LCUIDisplay_Windowed( void )
{
	switch( display.mode ) {
	case LDM_FULLSCREEN:
	case LDM_WINDOWED:
		return 0;
	case LDM_SEAMLESS:
	default:
		LCUIDisplay_CleanSurfaces();
		LCUIDisplay_BindSurface( LCUIRootWidget );
		break;
	}
	Widget_Show( LCUIRootWidget );
	Widget_Resize( LCUIRootWidget, display.info.getWidth(),
		       display.info.getHeight() );
	display.mode = LDM_WINDOWED;
	return 0;
}
Ejemplo n.º 25
0
static int LCUIDisplay_Windowed( void )
{
	LCUI_Widget root = LCUIWidget_GetRoot();
	switch( display.mode ) {
	case LCDM_WINDOWED:
		return 0;
	case LCDM_FULLSCREEN:
		break;
	case LCDM_SEAMLESS:
	default:
		LCUIDisplay_CleanSurfaces();
		LCUIDisplay_BindSurface( root );
		break;
	}
	Widget_Show( root );
	Widget_Resize( root, DEFAULT_WIDTH, DEFAULT_HEIGHT );
	display.mode = LCDM_WINDOWED;
	return 0;
}
Ejemplo n.º 26
0
TextBox_Cursor_Move( LCUI_Widget *widget, LCUI_Pos new_pos )
/* 移动文本框内的光标 */
{
	LCUI_Pos pixel_pos;
	LCUI_Widget *cursor;
	LCUI_TextLayer *layer;
	LCUI_Size size;
	
	layer = TextBox_GetTextLayer( widget );
	cursor = TextBox_GetCursor( widget );
	size.w = 1;
	size.h = TextLayer_CurRow_GetMaxHeight( layer );
	pixel_pos = TextLayer_Cursor_SetPos( layer, new_pos );
	Widget_Move( cursor, pixel_pos );
	Widget_Resize( cursor, size );
	if( active_textbox == widget ) {
		Widget_Show( cursor );
	}
	/* 更新文本显示区域 */
	TextBox_ViewArea_Update( widget );
	return pixel_pos;
}
Ejemplo n.º 27
0
static void thread(void *arg)
{
	LCUI_Widget *widget, *label;
	
	widget = (LCUI_Widget*)arg; 
	label = Widget_New( "label" );
	Widget_Container_Add( widget, label );
	Widget_SetAlign( label, ALIGN_MIDDLE_CENTER, Pos(0,0) );
	Widget_Show( label );
	while(LCUI_Active()) {
		Label_Text( label, "DOCK_TYPE_TOP" );
		Widget_SetDock( widget, DOCK_TYPE_TOP ); 
		Widget_SetSize( widget, "120px", "120px" ); 
		/* 还原尺寸 */
		LCUI_Sleep(1);
		Label_Text( label, "DOCK_TYPE_LEFT" );
		Widget_SetDock( widget, DOCK_TYPE_LEFT ); 
		Widget_SetSize( widget, "120px", "120px" ); 
		LCUI_Sleep(1);
		Label_Text( label, "DOCK_TYPE_RIGHT" );
		Widget_SetDock( widget, DOCK_TYPE_RIGHT ); 
		Widget_SetSize( widget, "120px", "120px" ); 
		LCUI_Sleep(1);
		Label_Text( label, "DOCK_TYPE_BOTTOM" );
		Widget_SetDock( widget, DOCK_TYPE_BOTTOM ); 
		Widget_SetSize( widget, "120px", "120px" ); 
		LCUI_Sleep(1);
		Label_Text( label, "DOCK_TYPE_FILL" );
		Widget_SetDock( widget, DOCK_TYPE_FILL ); 
		Widget_SetSize( widget, "120px", "120px" ); 
		LCUI_Sleep(1);
		Label_Text( label, "DOCK_TYPE_NONE" );
		Widget_SetDock( widget, DOCK_TYPE_NONE ); 
		Widget_SetSize( widget, "120px", "120px" );  
		LCUI_Sleep(1);
	}
	LCUIThread_Exit(NULL);
}
Ejemplo n.º 28
0
static void OnSidebarBtnClick( LCUI_Widget self, LCUI_WidgetEvent e, void *unused )
{
	int i;
	LCUI_Widget sidebar;
	LCUI_Widget btn, view = e->data;
	const char *view_id = view->id;
	Widget_RemoveClass( view, "hide" );
	Widget_UpdateStyle( view, TRUE );
	Widget_Show( view );
	for( i = 0; i < MAX_VIEWS; ++i ) {
		if( strcmp( view_id, btn_view_ids[i][1] ) == 0 ) {
			continue;
		}
		btn = LCUIWidget_GetById( btn_view_ids[i][0] );
		view = LCUIWidget_GetById( btn_view_ids[i][1] );
		Widget_AddClass( view, "hide" );
		Widget_RemoveClass( btn, "active" );
		Widget_Hide( view );
	}
	sidebar = LCUIWidget_GetById( "main-sidebar" );
	Widget_AddClass( sidebar, "sidebar-mini" );
	Widget_AddClass( self, "active" );
}
Ejemplo n.º 29
0
void GameWindow_ShowLicenseWindow(void)
{
	/* 设置为模态部件 */
	Widget_SetModal( window, TRUE );
	Widget_Show( window );
}
Ejemplo n.º 30
0
static void 
TextBox_ScrollBar_UpdateSize( LCUI_Widget *widget )
/* 更新滚动条的长度 */
{
	int tmp;
	char size_str[15];
	LCUI_Size area_size, layer_size;
	LCUI_Widget *scrollbar[2], *label;
	LCUI_TextLayer *layer;
	
	label = TextBox_GetLabel( widget );
	/* 获取文本图层 */
	layer = TextBox_GetTextLayer( widget );
	
	/* 获取文本图层和文本框区域的尺寸 */
	layer_size = TextLayer_GetSize( layer );
	area_size = Widget_GetContainerSize( widget );
	/* 获取纵向和横向滚动条 */
	scrollbar[0] = TextBox_GetScrollbar( widget, 0 );
	scrollbar[1] = TextBox_GetScrollbar( widget, 1 );
	
	/* 如果文本图层高度超过显示区域 */
	if( layer->enable_multiline && area_size.h > 0 
	  && layer_size.h > area_size.h ) {
		tmp = area_size.w - Widget_GetWidth( scrollbar[0] );
#ifdef LCUI_BUILD_IN_LINUX
		snprintf( size_str, sizeof(size_str)-1, "%dpx", tmp );
#else
		sprintf_s( size_str, sizeof(size_str)-1, "%dpx", tmp );
#endif
		Widget_SetSize( label, size_str, NULL );
		
		/* 修改滚动条中记录的最大值和当前值,让滚动条在更新后有相应的长度 */
		ScrollBar_SetMaxSize( scrollbar[0], layer_size.h );
		ScrollBar_SetCurrentSize( scrollbar[0], area_size.h );
		Widget_Show( scrollbar[0] );
		/* 如果横向滚动条可见 */
		if( scrollbar[1]->visible ) {
			tmp = area_size.h - Widget_GetHeight( scrollbar[1] );
#ifdef LCUI_BUILD_IN_LINUX
			snprintf( size_str, sizeof(size_str)-1, "%dpx", tmp );
#else
			sprintf_s( size_str, sizeof(size_str)-1, "%dpx", tmp );
#endif
			Widget_SetSize( scrollbar[0], NULL, size_str );
		} else {
			Widget_SetSize( scrollbar[0], NULL, "100%" );
		}
	} else {
		/* 不需要显示滚动条 */
		Widget_Hide( scrollbar[0] );
		Widget_SetSize( label, "100%", NULL );
	}
	/* 和上面的处理基本一样,这个是处理横向滚动条 */
	if( layer->enable_multiline &&
	 area_size.w > 0 && layer_size.w > area_size.w ) {
		tmp = area_size.h - Widget_GetHeight( scrollbar[1] );
#ifdef LCUI_BUILD_IN_LINUX
		snprintf( size_str, sizeof(size_str)-1, "%dpx", tmp );
#else
		sprintf_s( size_str, sizeof(size_str)-1, "%dpx", tmp );
#endif
		Widget_SetSize( label, NULL, size_str );
		
		ScrollBar_SetMaxSize( scrollbar[1], layer_size.w );
		ScrollBar_SetCurrentSize( scrollbar[1], area_size.w );
		Widget_Show( scrollbar[1] );
		
		if( scrollbar[0]->visible ) {
			tmp = area_size.w - Widget_GetWidth( scrollbar[0] );
#ifdef LCUI_BUILD_IN_LINUX
			snprintf( size_str, sizeof(size_str)-1, "%dpx", tmp );
#else
			sprintf_s( size_str, sizeof(size_str)-1, "%dpx", tmp );
#endif
			Widget_SetSize( scrollbar[1], size_str, NULL );
		} else {
			Widget_SetSize( scrollbar[1], "100%", NULL );
		}
	} else {
		Widget_SetSize( label, NULL, "100%" );
		Widget_Hide( scrollbar[1] );
	}
}