GUITopLevelDescription CSSBrowser::get_window_description() { GUITopLevelDescription desc; desc.set_size(Size(1280, 865), false); desc.set_title("Carambola Browser"); desc.set_allow_resize(true); return desc; }
GUITopLevelDescription MainWindow::get_window_description() { GUITopLevelDescription desc; desc.set_title("ClanLib Texture Packer"); desc.set_allow_resize(true); desc.set_position(Rect(200, 200, 1024, 768), false); return desc; }
GUIComponent::GUIComponent(GUIManager *manager, const GUITopLevelDescription &description, const std::string &tag_name) : impl(GUIComponent_Impl::create_from_manager(manager)) { impl->component = this; impl->element.set_component(this); impl->allow_resize = description.get_allow_resize(); impl->visible = description.is_visible(); impl->gui_manager.lock()->add_component(this, 0, description); impl->window_resized(); set_tag_name(tag_name); request_repaint(); }
void GUIWindowManagerProvider_Direct::create_window( GUITopLevelWindow *handle, GUITopLevelWindow *owner, GUIComponent *component, GUITopLevelDescription description) { //Note: destroy_window() deletes this window GUITopLevelWindowDirect *toplevel_window = new GUITopLevelWindowDirect(handle); Rect geometry = description.get_position(); toplevel_window->geometry = geometry; toplevel_window->enabled = true; toplevel_window->visible = true; window_map[handle] = toplevel_window; if (owner) { // Attach to owner toplevel_window->owner_window = get_direct_window(owner); toplevel_window->owner_window->child_windows_zorder.insert(toplevel_window->owner_window->child_windows_zorder.begin(), toplevel_window); } else { // Attach to root root_window_z_order.insert(root_window_z_order.begin(), toplevel_window); } activated_window = handle; }
Window::Window(GUIManager *manager, const GUITopLevelDescription &description) : GUIComponent(manager, description, CssStr::Window::type_name), impl(std::make_shared<Window_Impl>()) { if (manager->get_window_manager().get_window_manager_type() == GUIWindowManager::cl_wm_type_system) impl->has_frame = false; impl->init(this); impl->title = description.get_title(); }
GUITopLevelDescription DlgAddNewProject::get_toplevel_description() { GUITopLevelDescription desc; desc.show_minimize_button(false); desc.show_maximize_button(false); desc.show_sysmenu(false); desc.set_allow_resize(true); desc.set_title("New Project"); desc.set_size(Size(480, 150), true); return desc; }
GUITopLevelDescription ToolTip_Impl::create_description() { GUITopLevelDescription desc; desc.set_title("Tooltip"); desc.set_visible(false); desc.set_topmost(true); desc.set_drop_shadow(true); desc.set_tool_window(true); desc.show_caption(false); return desc; }
GUITopLevelDescription DlgAddNewItem::get_toplevel_description() { GUITopLevelDescription desc; desc.show_minimize_button(false); desc.show_maximize_button(false); desc.show_sysmenu(false); desc.set_allow_resize(true); desc.set_title("Add New Item"); desc.set_size(Size(680, 350), true); return desc; }
MessageBoxResult message_box_impl( T *owner, std::string title, std::string detail_text, MessageBoxButtons buttons, MessageBoxIcon icon, const Rect owner_geometry) { GUITopLevelDescription desc; desc.set_title(title); desc.set_dialog_window(true); desc.set_allow_resize(true); desc.set_position(Rect(100,100,200,200), false); desc.set_visible(false); GUIComponent window(owner, desc, "window"); MessageBoxComponent mb(&window, detail_text, buttons, icon); Size content_size = mb.layout_content(); window.func_close().set(&mb, &MessageBoxComponent::on_window_close, &window); DisplayWindow disp_win = window.get_display_window(); Point win_tl = window.get_window_geometry().get_top_left(); Point cont_tl = disp_win.client_to_screen(Point(0,0)); Point decorations_top_left = cont_tl - win_tl; Point win_br = window.get_window_geometry().get_bottom_right(); Rect client = window.get_content_box(); Point cont_br = disp_win.client_to_screen(client.get_bottom_right()); Point decorations_bottom_right = win_br - cont_br; Rect win_geometry; int wing_width = decorations_top_left.x + content_size.width + decorations_bottom_right.x; int wing_height = decorations_top_left.y + content_size.height + decorations_bottom_right.y; win_geometry.left = owner_geometry.get_center().x - wing_width/2; win_geometry.top = owner_geometry.get_center().y - wing_height/2; win_geometry.right = win_geometry.left + wing_width; win_geometry.bottom = win_geometry.top + wing_height; window.set_window_geometry(win_geometry); mb.set_geometry(Rect(0,0,content_size.width, content_size.height)); window.set_visible(); MessageBoxResult reason = MessageBoxResult(window.exec()); return reason; }
Window::Window(GUIComponent *owner, const GUITopLevelDescription &description) : GUIComponent(owner, description, CssStr::Window::type_name), impl(std::make_shared<Window_Impl>()) { impl->init(this); impl->title = description.get_title(); }
void GUIWindowManagerProvider_System::create_window( GUITopLevelWindow *handle, GUITopLevelWindow *owner, GUIComponent *component, GUITopLevelDescription description) { description.set_update_supported(true); GUITopLevelWindowSystem *owner_window = 0; if (owner) { owner_window = window_map[owner]; description.set_owner_window(owner_window->window); } GUITopLevelWindowSystem *top_level_window; #ifdef WIN32 // Cached windows do not work on Linux if (description.get_using_gui_window_cache()) { used_cached_windows++; if (used_cached_windows <= cached_windows.size()) { top_level_window = cached_windows[used_cached_windows-1]; top_level_window->slots = SlotContainer(); cache_window_handles[handle] = top_level_window->window.get_hwnd(); } else { top_level_window = new GUITopLevelWindowSystem; top_level_window->window = DisplayWindow(description); top_level_window->canvas = Canvas(top_level_window->window); cached_windows.push_back(top_level_window); cache_window_handles[handle] = top_level_window->window.get_hwnd(); } } else #endif { top_level_window = new GUITopLevelWindowSystem; top_level_window->window = DisplayWindow(description); top_level_window->canvas = Canvas(top_level_window->window); } top_level_window->canvas.set_map_mode(map_2d_upper_left); top_level_window->slots.connect(top_level_window->window.sig_lost_focus(), this, &GUIWindowManagerProvider_System::on_displaywindow_lost_focus, handle); top_level_window->slots.connect(top_level_window->window.sig_got_focus(), this, &GUIWindowManagerProvider_System::on_displaywindow_got_focus, handle); top_level_window->slots.connect(top_level_window->window.sig_resize(), this, &GUIWindowManagerProvider_System::on_displaywindow_resize, handle); top_level_window->slots.connect(top_level_window->window.sig_paint(), this, &GUIWindowManagerProvider_System::on_displaywindow_paint, handle); top_level_window->slots.connect(top_level_window->window.sig_window_close(), this, &GUIWindowManagerProvider_System::on_displaywindow_window_close, handle); top_level_window->slots.connect(top_level_window->window.sig_window_destroy(), this, &GUIWindowManagerProvider_System::on_displaywindow_window_destroy, handle); InputContext ic = top_level_window->window.get_ic(); top_level_window->slots.connect(ic.get_mouse().sig_key_up(), this, &GUIWindowManagerProvider_System::on_input, handle); top_level_window->slots.connect(ic.get_mouse().sig_key_down(), this, &GUIWindowManagerProvider_System::on_input, handle); top_level_window->slots.connect(ic.get_mouse().sig_key_dblclk(), this, &GUIWindowManagerProvider_System::on_input, handle); top_level_window->slots.connect(ic.get_mouse().sig_pointer_move(), this, &GUIWindowManagerProvider_System::on_input, handle); top_level_window->slots.connect(ic.get_keyboard().sig_key_up(), this, &GUIWindowManagerProvider_System::on_input, handle); top_level_window->slots.connect(ic.get_keyboard().sig_key_down(), this, &GUIWindowManagerProvider_System::on_input, handle); for (int i = 0; i < ic.get_tablet_count(); ++i) { top_level_window->slots.connect(ic.get_tablet(i).sig_axis_move(), this, &GUIWindowManagerProvider_System::on_input, handle); top_level_window->slots.connect(ic.get_tablet(i).sig_key_down(), this, &GUIWindowManagerProvider_System::on_input, handle); top_level_window->slots.connect(ic.get_tablet(i).sig_key_dblclk(), this, &GUIWindowManagerProvider_System::on_input, handle); top_level_window->slots.connect(ic.get_tablet(i).sig_key_up(), this, &GUIWindowManagerProvider_System::on_input, handle); top_level_window->slots.connect(ic.get_tablet(i).sig_proximity_change(), this, &GUIWindowManagerProvider_System::on_input, handle); } window_map[handle] = top_level_window; sig_toplevel_window_created.invoke(top_level_window->window); }