CL_GUITopLevelDescription LoginView::get_toplevel_description() { CL_GUITopLevelDescription desc; desc.set_title("Connect to Server"); desc.set_position(CL_RectPS(312, 100, 400, 260), false); return desc; }
void CL_GUIComponent::render(CL_GraphicContext &gc, const CL_Rect &clip_rect, bool include_children) { if (!impl->visible) return; if (!impl->css_layout.is_null()) { impl->css_layout.layout(gc, get_size()); impl->css_layout.render(gc, this); } if (impl->func_render.is_null() == false) { impl->func_render.invoke(gc, clip_rect); } else { CL_GUIThemePart part(this); CL_Rect geometry = get_size(); part.render_box(gc, CL_RectPS(0, 0, geometry.get_width(), geometry.get_height()), clip_rect); } if (include_children) { if (impl->clip_children) { push_cliprect(gc, impl->clip_children_rect); } CL_GUIComponent *cur = impl->first_child; while (cur) { CL_Rect cur_geometry = cur->get_geometry(); CL_Rect update_rect = component_to_window_coords(clip_rect); update_rect.overlap(component_to_window_coords(cur_geometry)); if (update_rect.get_width() > 0 && update_rect.get_height() > 0) { CL_Rect child_dirty_rect = cur->window_to_component_coords(update_rect); gc.push_translate((float)cur_geometry.left, (float)cur_geometry.top); cur->render(gc, child_dirty_rect, true); gc.pop_modelview(); } cur = cur->impl->next_sibling; } if (impl->clip_children) { pop_cliprect(gc); } } }
LoginView::LoginView(CL_GUIManager *gui_manager) : CL_GUIComponent(gui_manager, get_toplevel_description()) { set_class_name("login"); label_info = new CL_Label(this); label_info->set_geometry(CL_RectPS(15, 10, 370, 27)); label_info->set_class_name("header"); label_info->set_text("Enter connection information"); label_player_nick = new CL_Label(this); label_player_nick->set_geometry(CL_RectPS(15, 50, 370, 27)); label_player_nick->set_text("Player nick:"); edit_player_nick = new CL_LineEdit(this); edit_player_nick->set_geometry(CL_RectPS(15, 77, 370, 23)); edit_player_nick->func_after_edit_changed().set(this, &LoginView::on_edit_player_nick_changed); #ifdef _DEBUG edit_player_nick->set_text("Player"); #endif label_server = new CL_Label(this); label_server->set_geometry(CL_RectPS(15, 120, 370, 27)); label_server->set_text("Server information:"); edit_server = new CL_LineEdit(this); edit_server->set_geometry(CL_RectPS(15, 147, 300, 23)); edit_server->set_text("localhost"); edit_port = new CL_LineEdit(this); edit_port->set_geometry(CL_RectPS(320, 147, 65, 23)); edit_port->set_text("4558"); button_ok = new CL_PushButton(this); button_ok->set_geometry(CL_RectPS(15, 205, 75, 23)); button_ok->set_text("OK"); button_ok->func_clicked().set(this, &LoginView::on_button_ok_clicked); update_button_states(); button_cancel = new CL_PushButton(this); button_cancel->set_geometry(CL_RectPS(245, 205, 75, 23)); button_cancel->set_text("Cancel"); button_cancel->func_clicked().set(this, &LoginView::on_button_cancel_clicked); }
int main(const std::vector<CL_String> &args) { try { CL_GUIManager gui; CL_ResourceManager resources("../../../Resources/GUIThemeLuna/resources.xml"); CL_GUIWindowManagerSystem wm; gui.set_window_manager(wm); CL_GUIThemeDefault theme; theme.set_resources(resources); gui.set_theme(theme); //gui.set_css_document("theme.css"); gui.set_css_document("../../../Resources/GUIThemeLuna/theme.css"); CL_DisplayWindowDescription win_desc; win_desc.set_allow_resize(true); win_desc.set_title("Button WM System Test Application"); win_desc.set_position(CL_RectPS(200, 200, 320, 240), false); CL_Window window(&gui, win_desc); window.func_close().set(this, &App::on_close, &window); CL_PushButton button(&window); button.set_geometry(CL_RectPS(10, 10, 160, 40)); button.set_text("Button 1"); CL_PushButton button2(&window); button2.set_geometry(CL_RectPS(10, 50, 160, 40)); button2.set_text("Button 2"); button2.set_enabled(false); CL_PushButton button3(&window); button3.set_geometry(CL_RectPS(10, 90, 160, 40)); button3.set_text("Button 3"); CL_CheckBox check1(&window); check1.set_geometry(CL_RectPS(10, 130, 160, 21)); check1.set_text("Check Box 1"); CL_CheckBox check2(&window); check2.set_geometry(CL_RectPS(10, 160, 160, 21)); check2.set_text("Check Box 2"); check2.set_enabled(false); CL_CheckBox check3(&window); check3.set_geometry(CL_RectPS(10, 190, 160, 21)); check3.set_text("Check Box 3"); gui.exec(); } catch (CL_Exception e) { CL_ConsoleWindow console("Console"); CL_Console::write_line(e.message); console.display_close_message(); } return 0; }