Options::Options(CL_GUIManager &gui, CL_Rect gui_position) : CL_GUIComponent(&gui, CL_GUITopLevelDescription("Options", gui_position, false)) { // Note, when changing these, remember to change the popup menu defaults num_particles = 64; point_size = 64; int slider_xpos = 450; int slider_ypos = 100; int slider_gap = 24; slider_num_particles = create_slider(slider_xpos, slider_ypos); slider_ypos += slider_gap; slider_ypos += 8; slider_num_particles->set_max(1000); slider_num_particles->set_position(num_particles); slider_num_particles->func_value_changed().set(this, &Options::slider_num_particles_changed); slider_ypos += 8; label_num_particles = create_slider_label(slider_num_particles); slider_point_size = create_slider(slider_xpos, slider_ypos); slider_ypos += slider_gap; slider_ypos += 8; slider_point_size->set_max(256); slider_point_size->set_position(point_size); slider_point_size->func_value_changed().set(this, &Options::slider_point_size_changed); slider_ypos += 8; label_point_size = create_slider_label(slider_point_size); update_all_slider_text(); func_render().set(this, &Options::on_render); }
CL_ListView::CL_ListView(CL_GUIComponent *parent) : CL_GUIComponent(parent), impl(new CL_ListView_Impl) { set_type_name("listview"); set_focus_policy(focus_local); impl->listview = this; impl->renderer = new CL_ListViewRenderer(this); impl->renderer->create_parts(); impl->renderer->set_icon_list(impl->icon_list); impl->create_components(); func_process_message().set(impl.get(), &CL_ListView_Impl::on_process_message); func_render().set(impl.get(), &CL_ListView_Impl::on_render); func_resized().set(impl.get(), &CL_ListView_Impl::on_resized); func_style_changed().set(impl.get(), &CL_ListView_Impl::on_style_changed); impl->document_item.impl->func_item_added.set(impl.get(), &CL_ListView_Impl::on_item_added); impl->document_item.impl->func_item_modified.set(impl.get(), &CL_ListView_Impl::on_item_modified); impl->document_item.impl->func_item_deleted.set(impl.get(), &CL_ListView_Impl::on_item_deleted); impl->create_parts(); set_display_mode(listview_mode_details); // impl->update_part_positions(); }
TabPage::TabPage(GUIComponent *parent) : GUIComponent(parent, CssStr::TabPage::type_name), impl(new TabPage_Impl) { impl->component = this; func_process_message().set(impl.get(), &TabPage_Impl::on_process_message); func_render().set(impl.get(), &TabPage_Impl::on_render); func_resized().set(impl.get(), &TabPage_Impl::on_resized); }
Options::Options(clan::GUIManager &gui, clan::Rect gui_position) : clan::GUIComponent(&gui, clan::GUITopLevelDescription("Options", gui_position, false)) { // Note, when changing these, remember to change the popup menu defaults compare_function = clan::compare_greater; stencil_pass = clan::stencil_keep; stencil_fail = clan::stencil_incr; num_balls = 9; is_moveballs_set = true; is_circle_set = true; compare_reference = 1; int slider_xpos = 400; int slider_ypos = 250; int slider_gap = 24; slider_numballs = create_slider(slider_xpos, slider_ypos); slider_ypos += slider_gap; slider_ypos += 8; slider_numballs->set_max(9); slider_numballs->set_position(num_balls); slider_numballs->func_value_changed() = bind_member(this, &Options::slider_numballs_changed); slider_ypos += 8; label_numballs = create_slider_label(slider_numballs); slider_ypos += 8; slider_compare_reference = create_slider(slider_xpos, slider_ypos); slider_ypos += slider_gap; slider_ypos += 8; slider_compare_reference->set_max(16); slider_compare_reference->set_position(compare_reference); slider_compare_reference->func_value_changed() = bind_member(this, &Options::slider_compare_reference_changed); slider_ypos += 8; label_compare_reference = create_slider_label(slider_compare_reference); int checkbox_xpos = slider_xpos; int checkbox_ypos = slider_ypos; int checkbox_gap = 24; checkbox_moveballs = create_checkbox(checkbox_xpos, checkbox_ypos, "Moving Balls", is_moveballs_set); checkbox_moveballs->func_state_changed() = bind_member(this, &Options::checkbox_moveballs_changed); checkbox_ypos += checkbox_gap + 8; checkbox_circle = create_checkbox(checkbox_xpos, checkbox_ypos, "Draw Stencil Circle (Without selected stencil options)", is_circle_set); checkbox_circle->func_state_changed() = bind_member(this, &Options::checkbox_circle_changed); checkbox_ypos += checkbox_gap + 8; make_compare_menu(combo_compare_menu); combo_comparefunc = create_compare_combo_box(600, 40, combo_compare_menu, 3); label_comparefunc = create_combobox_label(combo_comparefunc, "Compare Function"); make_passfail_menu(combo_pass_menu); combo_pass = create_passfail_combo_box(600, 80, combo_pass_menu, 0); label_pass = create_combobox_label(combo_pass, "Pass Operation"); make_passfail_menu(combo_fail_menu); combo_fail = create_passfail_combo_box(600, 120, combo_fail_menu, 3); label_fail = create_combobox_label(combo_fail, "Fail Operation"); update_all_slider_text(); func_render() = bind_member(this, &Options::on_render); }
Workspace::Workspace(GUIComponent *main_window) : GUIComponent(main_window, "workspace"), root_docking_group(0), next_dockinggroup_id(1) { part_empty = GUIThemePart(this, "empty-center"); _instance = this; func_render().set(this, &Workspace::on_render); root_docking_group = new DockingGroup(this); }
virtual void render( ::osiris::HtmlWriter & writer ) { ::osiris::PythonState __pystate(getPythonThreadState()); if( ::osiris::PythonOverride func_render = this->get_override( "render" ) ) func_render( boost::ref(writer) ); else{ __pystate.leave(); this->::osiris::HtmlLinkTag::render( boost::ref(writer) ); } }
ToolBar::ToolBar(GUIComponent *parent) : GUIComponent(parent, CssStr::ToolBar::type_name), impl(new ToolBar_Impl) { set_class("horizontal", true); impl->toolbar = this; func_process_message().set(impl.get(), &ToolBar_Impl::on_process_message); func_render().set(impl.get(), &ToolBar_Impl::on_render); func_resized().set(impl.get(), &ToolBar_Impl::on_resized); impl->create_parts(); }
Toolbar::Toolbar(const CL_Rect &position, CL_GUIComponent* owner) : CL_GUIComponent(owner, get_toplevel_description(position)), selected_index(-1), clicked_index(-1) { set_type_name("toolbar"); func_render().set(this, &Toolbar::on_render); func_style_changed().set(this, &Toolbar::on_style_changed); func_process_message().set(this, &Toolbar::on_process_message); create_parts(); }
DockedFrame::DockedFrame(GUIComponent *parent, DockableComponent *dockable) : GUIComponent(parent, "docked-frame"), dockable(dockable) { func_resized().set(this, &DockedFrame::on_resized); func_render().set(this, &DockedFrame::on_render); dockable->set_parent_component(this); dockable->set_visible(true, false); set_visible(false, false); on_resized(); request_repaint(); }
ToolTip::ToolTip(GUIManager manager) : GUIComponent(&manager, ToolTip_Impl::create_description(), CssStr::ToolTip::type_name), impl(std::make_shared<ToolTip_Impl>()) { impl->tooltip = this; func_process_message() = bind_member(impl.get(), &ToolTip_Impl::on_process_message); func_render() = bind_member(impl.get(), &ToolTip_Impl::on_render); impl->timer_show_delayed.func_expired() = bind_member(impl.get(), &ToolTip_Impl::on_show_delayed); impl->sc.connect(get_gui_manager().sig_filter_message(), bind_member(impl.get(), &ToolTip_Impl::on_filter_message)); }
CL_ListViewHeader::CL_ListViewHeader(CL_GUIComponent *parent) : CL_GUIComponent(parent), impl(new CL_ListViewHeader_Impl) { set_type_name(CssStr::ListView::Header::type_name); impl->listview_header = this; func_process_message().set(impl.get(), &CL_ListViewHeader_Impl::on_process_message); func_render().set(impl.get(), &CL_ListViewHeader_Impl::on_render); // todo: resize (?) // todo: disabled impl->create_parts(); }
ToolTip::ToolTip(GUIManager manager) : GUIComponent(&manager, ToolTip_Impl::create_description(), CssStr::ToolTip::type_name), impl(new ToolTip_Impl) { impl->tooltip = this; func_process_message().set(impl.get(), &ToolTip_Impl::on_process_message); func_render().set(impl.get(), &ToolTip_Impl::on_render); impl->timer_show_delayed.func_expired().set(impl.get(), &ToolTip_Impl::on_show_delayed); impl->slot_filter_message = get_gui_manager().sig_filter_message().connect(impl.get(), &ToolTip_Impl::on_filter_message); }
StatusBar::StatusBar(GUIComponent *parent) : GUIComponent(parent, CssStr::StatusBar::type_name), impl(new StatusBar_Impl) { impl->statusbar = this; func_resized().set(impl.get(), &StatusBar_Impl::on_resized); func_render().set(impl.get(), &StatusBar_Impl::on_render); func_input_doubleclick().set(impl.get(), &StatusBar_Impl::on_input_doubleclick); impl->create_parts(); }
GridObject::GridObject(GridComponent *grid_component, clan::GUIComponent *parent, int id, const clan::Vec2i &pos) : clan::GUIComponent(parent), grid_component(grid_component), anchor_tl(clan::anchor_top_left), anchor_br(clan::anchor_top_left), component_type(0) { set_tag_name("object"); func_render().set(this, &GridObject::on_render); func_resized().set(this, &GridObject::on_resized); component_type = ComponentTypes::find_component(id); clan::GUIComponent *new_component = component_type->create_component(get_container()); set_geometry(clan::Rect(pos, new_component->get_size())); }
CL_MenuBar::CL_MenuBar( CL_GUIComponent *parent) : CL_GUIComponent(parent), impl(new CL_MenuBar_Impl) { set_type_name(CssStr::MenuBar::type_name); impl->menubar = this; func_process_message().set(impl.get(), &CL_MenuBar_Impl::on_process_message); func_render().set(impl.get(), &CL_MenuBar_Impl::on_render); func_resized().set(impl.get(), &CL_MenuBar_Impl::on_resized); func_style_changed().set(impl.get(), &CL_MenuBar_Impl::on_style_changed); impl->create_parts(); }
ProgressBar::ProgressBar(GUIComponent *parent) : GUIComponent(parent, CssStr::ProgressBar::type_name), impl(std::make_shared<ProgressBar_Impl>()) { impl->progressbar = this; impl->part_progress = GUIThemePart(this, "progress"); impl->part_chunk = GUIThemePart(this, "chunk"); impl->progressbar->set_pseudo_class(CssStr::normal, true); func_process_message() = bind_member(impl.get(), &ProgressBar_Impl::on_process_message); func_render() = bind_member(impl.get(), &ProgressBar_Impl::on_render); }
RadioButton::RadioButton(GUIComponent *parent) : GUIComponent(parent, CssStr::RadioButton::type_name), impl(new RadioButton_Impl) { set_focus_policy(focus_group); impl->radio = this; impl->create_parts(); func_process_message().set(impl.get(), &RadioButton_Impl::on_process_message); func_render().set(impl.get(), &RadioButton_Impl::on_render); func_enablemode_changed().set(impl.get(), &RadioButton_Impl::on_enablemode_changed); }
TabHeader::TabHeader(GUIComponent *parent) : GUIComponent(parent, CssStr::Tab::Header::type_name), impl(new TabHeader_Impl) { set_focus_policy(focus_local); impl->component = this; func_process_message().set(impl.get(), &TabHeader_Impl::on_process_message); func_render().set(impl.get(), &TabHeader_Impl::on_render); // todo: enablemode, resize impl->part_focus = GUIThemePart(this, CssStr::Tab::Header::part_focus); impl->first_tab_x_offset = get_property_int(CssStr::first_tab_x_offset, "0"); }
CL_TabHeader::CL_TabHeader(CL_GUIComponent *parent) : CL_GUIComponent(parent), impl(new CL_TabHeader_Impl) { set_type_name(CssStr::Tab::Header::type_name); set_focus_policy(focus_local); impl->component = this; func_process_message().set(impl.get(), &CL_TabHeader_Impl::on_process_message); func_render().set(impl.get(), &CL_TabHeader_Impl::on_render); func_style_changed().set(impl.get(), &CL_TabHeader_Impl::on_style_changed); // todo: enablemode, resize impl->on_style_changed(); }
CL_StatusBar::CL_StatusBar(CL_GUIComponent *parent) : CL_GUIComponent(parent), impl(new CL_StatusBar_Impl) { set_type_name("statusbar"); impl->statusbar = this; func_resized().set(impl.get(), &CL_StatusBar_Impl::on_resized); func_render().set(impl.get(), &CL_StatusBar_Impl::on_render); func_style_changed().set(impl.get(), &CL_StatusBar_Impl::on_style_changed); func_input_doubleclick().set(impl.get(), &CL_StatusBar_Impl::on_input_doubleclick); impl->create_parts(); }
Tab::Tab(GUIComponent *parent) : GUIComponent(parent, CssStr::Tab::type_name), impl(new Tab_Impl) { impl->tab = this; func_process_message().set(impl.get(), &Tab_Impl::on_process_message); func_render().set(impl.get(), &Tab_Impl::on_render); func_resized().set(impl.get(), &Tab_Impl::on_resized); impl->tab_header = new TabHeader(this); impl->tab_header->func_page_selected().set(impl.get(), &Tab_Impl::on_header_page_selected); }
RibbonMenu::RibbonMenu(GUIComponent *owner) : GUIComponent(owner, RibbonMenu_Impl::create_toplevel_description(), "ribbon-menu"), impl(new RibbonMenu_Impl) { impl->component = this; func_render().set(impl.get(), &RibbonMenu_Impl::on_render); func_resized().set(impl.get(), &RibbonMenu_Impl::on_resized); impl->part_menu_item = GUIThemePart(this, "menu-item"); impl->part_menu_item_selected = GUIThemePart(this, "menu-item"); impl->part_menu_item_selected.set_pseudo_class("selected", true); impl->part_menu_item_separator = GUIThemePart(this, "menu-item"); impl->part_menu_item_separator.set_pseudo_class("separator", true); impl->slot_filter = owner->get_gui_manager().sig_filter_message().connect(impl.get(), &RibbonMenu_Impl::on_filter_message); }
ScrollBar::ScrollBar(GUIComponent *parent) : GUIComponent(parent, CssStr::ScrollBar::type_name), impl(new ScrollBar_Impl) { impl->scrollbar = this; impl->create_parts(); impl->update_part_positions(); func_process_message().set(impl.get(), &ScrollBar_Impl::on_process_message); func_render().set(impl.get(), &ScrollBar_Impl::on_render); func_enablemode_changed().set(impl.get(), &ScrollBar_Impl::on_enablemode_changed); func_resized().set(impl.get(), &ScrollBar_Impl::on_resized); impl->mouse_down_timer.func_expired().set(impl.get(), &ScrollBar_Impl::on_timer_expired); }
ViewWorkspace::ViewWorkspace(clan::GUIComponent *parent) : clan::GUIComponent(parent, "workspace"), hot(false), current_page_index(0) { func_render().set(this, &ViewWorkspace::on_render); func_resized().set(this, &ViewWorkspace::on_resized); func_process_message().set(this, &ViewWorkspace::on_process_message); clan::Canvas canvas = get_canvas(); part_tab = clan::GUIThemePart(this, "workspacetab"); font_tab = clan::Font(canvas, "Tahoma", -11);//part_background.get_font(); image_cross = clan::Image(canvas, "Resources/cross-small.png"); image_cross_hot = clan::Image(canvas, "Resources/cross-small-hot.png"); image_cross_empty = clan::Image(canvas, "Resources/cross-small-empty.png"); on_resized(); }
RadialMenu::RadialMenu(CL_GUIComponent *parent) : CL_GUIComponent(parent) { set_type_name("radialmenu"); func_render().set(this, &RadialMenu::on_render); func_style_changed().set(this, &RadialMenu::on_style_changed); func_resized().set(this, &RadialMenu::on_resized); func_process_message().set(this, &RadialMenu::on_process_message); create_parts(); clear_items(); set_visible(false); }
void PopupMenuWindow::create_parts() { part_item_row = GUIThemePart(this, CssStr::PopupMenuWindow::part_item_row); part_item_icon = GUIThemePart(this, CssStr::PopupMenuWindow::part_item_icon); part_item_label = GUIThemePart(this, CssStr::PopupMenuWindow::part_item_label); part_item_check = GUIThemePart(this, CssStr::PopupMenuWindow::part_item_check); part_separator = GUIThemePart(this, CssStr::PopupMenuWindow::part_separator); part_submenu_arrow = GUIThemePart(this, CssStr::PopupMenuWindow::part_submenu_arrow); part_item_accel_label = GUIThemePart(this, CssStr::PopupMenuWindow::part_item_accel_label); part_menubar_joiner = GUIThemePart(this, CssStr::PopupMenuWindow::part_menubar_joiner); icon_column_width = get_property_int("icon-column-width", "30"); icon_size = part_item_icon.get_css_size(); check_size = part_item_check.get_css_size(); func_render().set(this, &PopupMenuWindow::on_render); }
GameComponent::GameComponent(const Rect &position, GUIManager* gui_manager) : GUIComponent(gui_manager, GUITopLevelDescription(position, false), "game_component"), radial_menu(0) { set_constant_repaint(true); func_render().set(this, &GameComponent::on_render); func_process_message().set(this, &GameComponent::on_message); Canvas canvas = get_canvas(); background = Image(canvas, "Resources/Images/background.jpg"); radial_menu = new RadialMenu(this); radial_menu->func_selected.set(this, &GameComponent::on_radial_menu_itemselected); font = clan::Font(canvas, "Tahoma", -30); }
CL_ScrollBar::CL_ScrollBar(CL_GUIComponent *parent) : CL_GUIComponent(parent), impl(new CL_ScrollBar_Impl) { set_type_name(CssStr::ScrollBar::type_name); // set_state(CssStr::normal, true); impl->scrollbar = this; impl->create_parts(); impl->update_part_positions(); func_process_message().set(impl.get(), &CL_ScrollBar_Impl::on_process_message); func_render().set(impl.get(), &CL_ScrollBar_Impl::on_render); func_enablemode_changed().set(impl.get(), &CL_ScrollBar_Impl::on_enablemode_changed); func_resized().set(impl.get(), &CL_ScrollBar_Impl::on_resized); impl->mouse_down_timer.func_expired().set(impl.get(), &CL_ScrollBar_Impl::on_timer_expired); }
GridComponent::GridComponent(clan::GUIComponent *parent, GuiEditorWindow *main_window) : clan::GUIComponent(parent), main_window(main_window), component_container(0), component_overlay(0), boundary(320,200) { set_tag_name("grid"); func_input_pressed().set(this, &GridComponent::on_input_pressed); func_input_released().set(this, &GridComponent::on_input_released); func_input_doubleclick().set(this, &GridComponent::on_input_doubleclick); func_input_pointer_moved().set(this, &GridComponent::on_input_pointer_moved); func_render().set(this, &GridComponent::on_render); func_resized().set(this, &GridComponent::on_resized); part_windowframe = clan::GUIThemePart(this, "window-frame"); edit_state.set_grid_component(this); component_container = new clan::GUIComponent(this); component_overlay = new clan::GUIComponent(this); component_overlay->func_render().set(this, &GridComponent::on_render_overlay); }
Options::Options(clan::GUIManager &gui, clan::Rect gui_position) : clan::GUIComponent(&gui, clan::GUITopLevelDescription("Options", gui_position, false)) { // Note, when changing these, remember to change the popup menu defaults current_mapmode = clan::map_2d_upper_left; num_balls = 3; grid_angle = 0; is_moveballs_set = true; int slider_xpos = 450; int slider_ypos = 100; int slider_gap = 24; slider_numballs = create_slider(slider_xpos, slider_ypos); slider_ypos += slider_gap; slider_ypos += 8; slider_numballs->set_max(9); slider_numballs->set_position(num_balls); slider_numballs->func_value_changed().set(this, &Options::slider_numballs_changed); slider_ypos += 8; label_numballs = create_slider_label(slider_numballs); slider_grid_angle = create_slider(slider_xpos, slider_ypos); slider_ypos += slider_gap; slider_ypos += 8; slider_grid_angle->set_min(-45); slider_grid_angle->set_max(90); slider_grid_angle->set_position(grid_angle); slider_grid_angle->func_value_changed().set(this, &Options::slider_grid_angle_changed); slider_ypos += 8; label_grid_angle = create_slider_label(slider_grid_angle); int checkbox_xpos = slider_xpos; int checkbox_ypos = slider_ypos; int checkbox_gap = 24; checkbox_moveballs = create_checkbox(checkbox_xpos, checkbox_ypos, "Moving Balls", is_moveballs_set); checkbox_moveballs->func_state_changed().set(this, &Options::checkbox_moveballs_changed); make_mapmode_menu(combo_mapmode_menu); combo_mapmode = create_mapmode_combo_box(450, 40, combo_mapmode_menu, 0); label_mapmode = create_combobox_label(combo_mapmode, "Map Mode"); update_all_slider_text(); func_render().set(this, &Options::on_render); }