si_t save_as_button_callback(void* btn, void* msg) { union message* m = (union message*)msg; struct button* b = NULL; switch(m->base.type) { case MESSAGE_TYPE_MOUSE_SINGLE_CLICK: if(NULL == save_window) { save_window = window_init("save window"); /* 申请失败 */ if(NULL == main_window) { EGUI_PRINT_ERROR("failed to init save window"); application_exit(); return -1; } window_set_bounds(save_window, main_window->area.x + 30, main_window->area.y + 30, 300, 60); window_set_color(save_window, NULL, &barely_blue); save_text_line = text_line_init(FILE_MAX, 0); if(NULL == save_text_line) { EGUI_PRINT_ERROR("failed to init save_text_line on save window"); application_exit(); return -1; } text_line_set_bounds(save_text_line, 5, 5, 230, 50); text_line_set_placeholder(save_text_line, "input file name"); text_line_set_color(save_text_line, &dark_blue, NULL, &light_green); b = button_init("ok"); if(NULL == b) { EGUI_PRINT_ERROR("failed to init ok button on save window"); application_exit(); return -1; } button_set_bounds(b, 240, 10, 50, 40); button_set_color(b, &dark_blue, &light_green); button_set_font(b, FONT_MATRIX_12); b->callback = save_window_ok_button_callback; object_attach_child(OBJECT_POINTER(save_window), OBJECT_POINTER(b)); object_attach_child(OBJECT_POINTER(save_window), OBJECT_POINTER(save_text_line)); application_add_window(NULL, save_window); break; } else { EGUI_PRINT_ERROR("save window already open!"); } default: button_default_callback(btn, msg); } return 0; }
si_t pop_window() { switch(save_or_rename_flag) { case 0: save_window = window_init("save_directory_window"); break; case 1: save_window = window_init("save_file_window"); break; case 2: save_window = window_init("rename_window"); break; default: break; } if(NULL == save_window) { //EGUI_PRINT_ERROR("failed to init save window"); application_exit(); return -1; } window_set_bounds(save_window,200, 200, 300, 60); window_set_color(save_window, NULL, &ground_purple); save_text_line = text_line_init(100, 0); if(NULL == save_text_line) { //EGUI_PRINT_ERROR("failed to init save_text_line on save window"); application_exit(); return -1; } text_line_set_bounds(save_text_line, 5, 5, 230, 50); text_line_set_placeholder(save_text_line, "input file name"); text_line_set_color(save_text_line, &heavy_blue, NULL, &heavy_blue ); save_button = button_init("OK"); if(NULL == save_button) { //EGUI_PRINT_ERROR("failed to init ok button on save window"); application_exit(); return -1; } button_set_bounds(save_button, 240, 10, 50, 40); button_set_color(save_button, &ground_purple, &heavy_blue ); button_set_font(save_button, FONT_MATRIX_12); save_button->callback = rename_window_ok_button_callback; object_attach_child(OBJECT_POINTER(save_window), OBJECT_POINTER(save_button)); object_attach_child(OBJECT_POINTER(save_window), OBJECT_POINTER(save_text_line)); application_add_window(Desktop_w, save_window); return 0; }