Esempio n. 1
0
/*
    一般用户并不需要调用这个
    用户应用程序退出之后,application 会释放这个控件所占的空间。
    而窗口管理程序会释放所有资源,包括申请的每个图形设备。
*/
si_t spinbox_exit(struct spinbox * b)
{
    list_exit(&b->subscribe_info_list);

    text_line_exit(b->text_number);
    button_exit(b->button_up);
    button_exit(b->button_down);

    return widget_exit(WIDGET_POINTER(b));
}
Esempio n. 2
0
/**
 * @brief 清理输入事件模块
 **/
static void event_exit()
{
	/**
	 * 清理输入设备数组 注意输入设备句柄由于已经添加到event_listener中 因此会自行close
	 **/
	vector_exit(&global_wm.input_device_vector);

	/**
	 * 清理消息队列
	 **/
	list_exit(&global_wm.message_list);
}
Esempio n. 3
0
si_t application_exit()
{
    struct object * addr;
    si_t i, n;

    /**
     * release focus list
     **/
    list_exit(&(global_application.focus_list));

    /* 有多少个窗口 */
    n = vector_size(&(global_application.window_vector));

    /* 依次删除窗口 */
    for(i = n - 1; i >= 0; -- i)
    {
        addr = vector_at(&(global_application.window_vector), i);

        /*
            这里没有逐个注销窗口类对象或者它的派生类对象。
            因为窗口管理程序收到用户应用程序的退出请求后,
            会释放关于这个用户应用程序的所有资源。
        */

        /* 释放这棵树 */
        object_tree_free(addr->parent);

        /* 从窗口向量中删除这个节点 */
        vector_erase(&(global_application.window_vector), i);
    }

    vector_exit(&(global_application.window_vector));

	if(0 != cancel_application())
	{
		EGUI_PRINT_ERROR("failed to cancle application");
	}

	event_listener_exit(&global_application.app_event_listener);
	queue_exit(&global_application.message_queue);
    uds_exit(&global_application.uds);

	free(global_application.name);
    free(global_application.icon_root_path);

    term_restore();

    return 0;
}
Esempio n. 4
0
static void easy_menu_loop(menu_item_t* menu, char* desc)
{
    list_dst* menu_ptr;
    menu_ptr = list_init();
    if (NULL == menu_ptr)
    {
        error_exit(3, "不能创建菜单控件");
    }
    list_props_set(menu_ptr , list_menu_property);
    int menu_count;
    for (menu_count = 0;; ++menu_count)
    {
        if (NULL == menu[menu_count].menu_desc)
            break;
        list_item_add(menu_ptr, menu[menu_count].menu_desc);
    }

    int32 ret;
    dis_mod_set(MAIN_DISP, INPUT_HZ_FONT, INPUT_ASC_FONT);
    while (1)
    {
        CLEAR_SCREEN;
        printf_str(MAIN_DISP, DISP_X_COOR, DISP_Y_COOR, ">", 1);
        printf_str(MAIN_DISP, DISP_X_COOR + 9, DISP_Y_COOR, desc, 1);
        line(MAIN_DISP , DISP_X_COOR, DISP_X_COOR + 28, DISP_X_COOR + 140, DISP_X_COOR + 28, 1);
        line(MAIN_DISP , DISP_X_COOR, DISP_X_COOR + 30, DISP_X_COOR + 140, DISP_X_COOR + 30, 1);
        list_show(MAIN_DISP, menu_ptr);
        lcd_160_upd();

        ret = list_key_manege(MAIN_DISP, menu_ptr, lcd_160_upd);
        if (ret < 0)
        {
            list_exit(menu_ptr) ;
            return ;
        }
        if (ret < menu_count)
        {
            menu[ret].func();
            dis_mod_set(MAIN_DISP, INPUT_HZ_FONT, INPUT_ASC_FONT);
        }
    }

}