Exemple #1
0
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;
}
Exemple #2
0
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;
}
Exemple #3
0
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;

}
Exemple #5
0
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;
}
Exemple #7
0
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;
}
Exemple #9
0
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;
}
Exemple #10
0
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();
}
Exemple #11
0
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);
}