const UString& TabItem::getCaption() { TabControl* owner = getParent() != nullptr ? getParent()->castType<TabControl>(false) : nullptr; if (owner != nullptr) return owner->getItemName(this); return Base::getCaption(); }
void FalagardTabButton::render() { TabButton* w = (TabButton*)d_window; // get WidgetLookFeel for the assigned look. const WidgetLookFeel& wlf = getLookNFeel(); TabControl* tc = static_cast<TabControl*>(w->getParent()->getParent()); String state; String prefix((tc->getTabPanePosition() == TabControl::Top) ? "Top" : "Bottom"); if (w->isDisabled()) state = "Disabled"; else if (w->isSelected()) state = "Selected"; else if (w->isPushed()) state = "Pushed"; else if (w->isHovering()) state = "Hover"; else state = "Normal"; if (!wlf.isStateImageryPresent(prefix + state)) { state = "Normal"; if (!wlf.isStateImageryPresent(prefix + state)) prefix = ""; } wlf.getStateImagery(prefix + state).render(*w); }
bool TabStrip::DragAndDrop_HandleDrop(Gwen::DragAndDrop::Package* /*pPackage*/, int x, int y) { Gwen::Point LocalPos = CanvasPosToLocal(Gwen::Point(x, y)); Base* el = DragAndDrop::SourceControl; TabButton* pButton = el ? el->DynamicCastTabButton() : 0; TabControl* pTabControl = GetParent() ? GetParent()->DynamicCastTabControl() : 0; if (pTabControl && pButton) { if (pButton->GetTabControl() != pTabControl) { // We've moved tab controls! pTabControl->AddPage(pButton); } } Base* DroppedOn = GetControlAt(LocalPos.x, LocalPos.y); if (DroppedOn) { Gwen::Point DropPos = DroppedOn->CanvasPosToLocal(Gwen::Point(x, y)); DragAndDrop::SourceControl->BringNextToControl(DroppedOn, DropPos.x > DroppedOn->Width() / 2); } else { DragAndDrop::SourceControl->BringToFront(); } return true; }
void WidgetDemo::initialiseWidgetInspector(CEGUI::Window* container) { WindowManager& winMgr = WindowManager::getSingleton(); //Add a tabcontrol serving as WidgetInspector, allowing to switch between events+widgets and the properties display TabControl* tabControl = static_cast<TabControl*>(winMgr.createWindow("TaharezLook/TabControl", "WidgetDemoWidgetInspector")); container->addChild(tabControl); tabControl->setSize(CEGUI::USize(cegui_reldim(0.55f), cegui_reldim(0.96f))); tabControl->setPosition(CEGUI::UVector2(cegui_reldim(0.02f), cegui_reldim(0.02f))); //Create the respective windows containing the displays CEGUI::Window* widgetMainInspectionContainer = winMgr.createWindow("DefaultWindow", "WidgetInspectionContainer"); CEGUI::Window* widgetPropertiesInspectionContainer = winMgr.createWindow("DefaultWindow", "WidgetPropertiesInspectionContainer"); //Add the pages to the tab control widgetMainInspectionContainer->setText("Widget Inspector"); tabControl->addTab(widgetMainInspectionContainer); widgetPropertiesInspectionContainer->setText("Widget Properties"); tabControl->addTab(widgetPropertiesInspectionContainer); //Create properties window initialiseWidgetPropertiesDisplayWindow(widgetPropertiesInspectionContainer); //Create the widget display windows initialiseWidgetDisplayWindow(); widgetMainInspectionContainer->addChild(d_widgetDisplayWindow); initialiseWidgetsEventsLog(); widgetMainInspectionContainer->addChild(d_widgetsEventsLog); initialiseEventLights(widgetMainInspectionContainer); }
void TabItem::setCaption(const UString& _value) { TabControl* owner = getParent() != nullptr ? getParent()->castType<TabControl>(false) : nullptr; if (owner != nullptr) owner->setItemName(this, _value); else Base::setCaption(_value); }
void TabItem::shutdownOverride() { TabControl* owner = getParent() != nullptr ? getParent()->castType<TabControl>(false) : nullptr; if (owner != nullptr) owner->_notifyDeleteItem(this); Base::shutdownOverride(); }
bool MenuNavigationSample::handleTabSelectionChanged(const CEGUI::EventArgs& e) { TabControl* tabControl = static_cast<TabControl*>(static_cast<const WindowEventArgs&>(e).window); // only the first tab has a window navigator if (tabControl->getSelectedTabIndex() == 0) d_root->getGUIContext().setWindowNavigator(d_matrixWindowNavigator); else d_root->getGUIContext().setWindowNavigator(d_linearWindowNavigator); return true; }
void SetInitProShopCityChild(Window* pageWnd) { TabControl* tbc = WTabControl(pageWnd); //默认第一个可见 tbc->setSelectedTabAtIndex(0); Window* ctt1 = tbc->getTabContentsAtIndex(tbc->getSelectedTabIndex()); if(ctt1) { ctt1->setVisible(true); //把ShopCityItemSet 加到他上面 ctt1->addChildWindow(InitShopCityItemSet()); } }
LRESULT CALLBACK TabControl::wndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { TabControl* tabControl = (TabControl*) GetWindowLongPtr(hwnd,GWLP_USERDATA); switch (msg) { case WM_SIZE: tabControl->OnResize(); break; } return (LRESULT)CallWindowProc((WNDPROC)tabControl->oldProc,hwnd,msg,wParam,lParam); }
void tabButton::onMouseDown( wxMouseEvent& event ) { if (m_bSelected) return; TabControl* temp = dynamic_cast<TabControl*>(GetParent()); if (temp) { temp->setActivePage_ID(this->GetId()); } event.Skip(); }
bool handleAddTab(const EventArgs&) { Window* root = d_guiContext->getRootWindow(); // Check if the window exists if (root->isChild("Frame/TabControl")) { TabControl* tc = static_cast<TabControl*>(root->getChild( "Frame/TabControl")); // Add some tab buttons once for (int num = 3; num <= 16; num++) { std::stringstream pgname; pgname << "Page" << num; if (root->isChild(String("Frame/TabControl/") + pgname.str().c_str())) // Next continue; Window* pg = 0; pg = WindowManager::getSingleton().loadLayoutFromFile("TabPage.layout"); CEGUI_TRY { pg = WindowManager::getSingleton().loadLayoutFromFile("TabPage.layout"); pg->setName(String(pgname.str().c_str())); } CEGUI_CATCH(CEGUI::Exception&) { Logger::getSingleton().logEvent("Some error occured while adding a tabpage. Please see the logfile."); break; } // This window has just been created while loading the layout if (pg->isChild("Text")) { Window* txt = pg->getChild("Text"); txt->setText(PageText[num - 3]); pg->setText(pgname.str().c_str()); tc->addTab(pg); refreshPageList(); break; } }
bool OnShopCityChildTabContentSelChanged(const CEGUI::EventArgs& e) { TabControl* tbc = WTabControl(WEArgs(e).window); if(tbc) { CEGUI::Window* tbcontent = tbc->getTabContentsAtIndex(tbc->getSelectedTabIndex()); if(tbcontent) { //把唯一ShopCityItemSet加到单前选中项上 CEGUI::Window* itemSet = GetWindow(SHOPCITY_ITEMSET_PAGE_NAME); tbcontent->addChildWindow(itemSet); //更新ItemSet的显示 FireUIEvent(SHOPCITY_ITEMSET_PAGE_NAME,SHOPCITY_ITEMSET_EVENT_UPDATE); //更新右搜索(筛选)菜单 FireUIEvent(SHOPCITY_SEARCH_RIGHTWND_NAME,SHOPCITY_SEARCHRIGHT_EVENT_MENUUPDATE_NAME); //更新左搜索(导购)菜单 FireUIEvent(SHOPCITY_SEARCH_LEFTWND_NAME,SHOPCITY_SEARCHLEFT_EVENT_MENUUPDATE_NAME); } } return true; }
// Gui Shortcut alt-letters //....................................................................................... void CGui::GuiShortcut(WND_Types wnd, int tab, int subtab) { if (subtab == -1 && (!app->bGuiFocus || pSet->inMenu != wnd)) subtab = -2; // cancel subtab cycling if (!app->bGuiFocus) if (app->edMode != ED_PrvCam) { app->bGuiFocus = !app->bGuiFocus; app->UpdVisGui(); } //isFocGui = true; pSet->isMain = false; pSet->inMenu = wnd; TabPtr mWndTabs = 0; std::vector<TabControl*>* subt = 0; switch (wnd) { case WND_Track: mWndTabs = app->mWndTabsTrack; subt = &vSubTabsTrack; break; case WND_Edit: mWndTabs = app->mWndTabsEdit; subt = &vSubTabsEdit; break; case WND_Help: mWndTabs = app->mWndTabsHelp; subt = &vSubTabsHelp; break; case WND_Options: mWndTabs = app->mWndTabsOpts; subt = &vSubTabsOpts; break; } if (wnd != WND_Edit) app->mWndPick->setVisible(false); toggleGui(false); size_t t = mWndTabs->getIndexSelected(); mWndTabs->setIndexSelected(tab); if (!subt) return; TabControl* tc = (*subt)[tab]; if (!tc) return; int cnt = tc->getItemCount(); if (t == tab && subtab == -1) // cycle subpages if same tab { if (app->shift) tc->setIndexSelected( (tc->getIndexSelected()-1+cnt) % cnt ); else tc->setIndexSelected( (tc->getIndexSelected()+1) % cnt ); } if (subtab > -1) tc->setIndexSelected( std::min(cnt-1, subtab) ); }
UiTest(const uvec2 & ) { Gui::init(uvec2(100, 200)); gameList = Fics::GameSummary::parseList(Platform::getResourceString(Resource::MISC_GAMELIST_TXT)); try { WindowManager & wmgr = WindowManager::getSingleton(); rootWindow = wmgr.createWindow("DefaultWindow", "root"); System::getSingleton().getDefaultGUIContext().setRootWindow(rootWindow); rootWindow->addChild(wmgr.loadLayoutFromFile("Login.layout")); //rb->setSelected(tc->getTabPanePosition() == TabControl::Top); //rb->subscribeEvent( // RadioButton::EventSelectStateChanged, // Event::Subscriber(&TabControlDemo::handleTabPanePos, this)); // bool handleTabPanePos(const EventArgs& e) //dumpWindows(rootWindow); rootWindow->getChild("LoginWindow/Login")-> subscribeEvent(PushButton::EventClicked, [&](const EventArgs& e) -> bool { return true; }); #if 0 rootWindow->addChild(wmgr.loadLayoutFromFile("TabControl.layout")); TabControl* tc = static_cast<TabControl*>(rootWindow->getChild("TabControl")); //// Add some pages to tab control tc->addTab(wmgr.loadLayoutFromFile("TabPage1.layout")); tc->addTab(wmgr.loadLayoutFromFile("TabPage2.layout")); MultiColumnList* mcl = static_cast<MultiColumnList*>(rootWindow->getChild("TabControl/Page1/MultiColumnList")); //MultiColumnList* mcl = static_cast<CEGUI::MultiColumnList*>( // wmgr.createWindow("TaharezLook/MultiColumnList", "WidgetPropertiesDisplay") //); //Create the properties display window //mcl->setSize(CEGUI::USize(cegui_reldim(0.9f), cegui_reldim(0.9f))); //mcl->setPosition(CEGUI::UVector2(cegui_reldim(0.05f), cegui_reldim(0.05f))); //rootWindow->addChild(mcl); dumpWindows(rootWindow); //mcl->setShowHorzScrollbar(false); //mcl->setUserColumnDraggingEnabled(false); //mcl->setUserColumnSizingEnabled(true); //mcl->addColumn("Name", 0, cegui_reldim(0.45f)); //mcl->addColumn("Type ", 1, cegui_reldim(0.25f)); //mcl->addColumn("Value", 2, cegui_reldim(0.8f)); //d_widgetPropertiesDisplayWindow->setSortColumnByID(0); //d_widgetPropertiesDisplayWindow->setSortDirection(CEGUI::ListHeaderSegment::Ascending); mcl->addColumn("Id", 0, cegui_reldim(0.05f)); mcl->addColumn("Type", 1, cegui_reldim(0.07f)); mcl->addColumn("Player (White)", 2, cegui_reldim(0.15f)); mcl->addColumn("Rating", 3, cegui_reldim(0.07f)); mcl->addColumn("Player (Black)", 4, cegui_reldim(0.15f)); mcl->addColumn("Rating", 5, cegui_reldim(0.07f)); mcl->addColumn("Private", 6, cegui_reldim(0.05f)); mcl->addColumn("Rated", 7, cegui_reldim(0.05f)); for (int i = 0; i < gameList.size(); ++i) { Fics::GameSummary & g = gameList[i]; mcl->addRow(); mcl->setItem(new ListboxTextItem(Platform::format("%d", g.id)), 0, i); mcl->setItem(new ListboxTextItem(g.private_ ? "Y" : "N"), 6, i); mcl->setItem(new ListboxTextItem(g.rated ? "Y" : "N"), 7, i); mcl->setItem(new ListboxTextItem(Chess::getTypeName(g.type)), 1, i); for (int j = 0; j < 2; ++j) { mcl->setItem(new ListboxTextItem(g.players[j]), 2 + (j * 2), i); mcl->setItem(new ListboxTextItem(Platform::format("%d", g.ratings[j])), 3 + (j * 2), i); } } // Add some empty rows to the MCL //multilineColumnList->addRow(); //multilineColumnList->addRow(); //multilineColumnList->addRow(); //multilineColumnList->addRow(); //multilineColumnList->addRow(); //// Set first row item texts for the MCL //multilineColumnList->setItem(new MyListItem("Laggers World"), 0, 0); //multilineColumnList->setItem(new MyListItem("yourgame.some-server.com"), 1, 0); //multilineColumnList->setItem(new MyListItem("[colour='FFFF0000']1000ms"), 2, 0); //// Set second row item texts for the MCL //multilineColumnList->setItem(new MyListItem("Super-Server"), 0, 1); //multilineColumnList->setItem(new MyListItem("whizzy.fakenames.net"), 1, 1); //multilineColumnList->setItem(new MyListItem("[colour='FF00FF00']8ms"), 2, 1); //// Set third row item texts for the MCL //multilineColumnList->setItem(new MyListItem("Cray-Z-Eds"), 0, 2); //multilineColumnList->setItem(new MyListItem("crayzeds.notarealserver.co.uk"), 1, 2); //multilineColumnList->setItem(new MyListItem("[colour='FF00FF00']43ms"), 2, 2); //// Set fourth row item texts for the MCL //multilineColumnList->setItem(new MyListItem("Fake IPs"), 0, 3); //multilineColumnList->setItem(new MyListItem("123.320.42.242"), 1, 3); //multilineColumnList->setItem(new MyListItem("[colour='FFFFFF00']63ms"), 2, 3); //// Set fifth row item texts for the MCL //multilineColumnList->setItem(new MyListItem("Yet Another Game Server"), 0, 4); //multilineColumnList->setItem(new MyListItem("abc.abcdefghijklmn.org"), 1, 4); //multilineColumnList->setItem(new MyListItem("[colour='FFFF6600']284ms"), 2, 4); //FrameWindow* fWnd = static_cast<FrameWindow*>( //wmgr.createWindow("TaharezLook/FrameWindow", "testWindow")); //myRoot->addChild(fWnd); //FrameWindow * frame = static_cast<FrameWindow*>(rootWindow->getChild("Frame")); //fWnd->setPosition(UVector2(UDim(0.25f, 0.0f), UDim(0.25f, 0.0f))); //fWnd->setSize(USize(UDim(0.5f, 0.0f), UDim(0.5f, 0.0f))); //fWnd->setText("Hello World!"); #endif } catch (CEGUI::Exception & ex) { SAY(ex.getMessage().c_str()); } }
// method to initialse the samples windows and events. bool initialise(CEGUI::GUIContext* guiContext) { d_guiContext = guiContext; d_usedFiles = CEGUI::String(__FILE__); // load font and setup default if not loaded via scheme Font& defaultFont = FontManager::getSingleton().createFromFile("DejaVuSans-12.font"); // Set default font for the gui context guiContext->setDefaultFont(&defaultFont); // we will use of the WindowManager. WindowManager& winMgr = WindowManager::getSingleton(); // load scheme and set up defaults SchemeManager::getSingleton().createFromFile(SKIN ".scheme"); d_guiContext->getMouseCursor().setDefaultImage(SKIN "/MouseArrow"); // load an image to use as a background if (!ImageManager::getSingleton().isDefined("SpaceBackgroundImage")) ImageManager::getSingleton().addFromImageFile("SpaceBackgroundImage", "SpaceBackground.jpg"); // here we will use a StaticImage as the root, then we can use it to place a background image Window* background = winMgr.createWindow(SKIN "/StaticImage"); // set area rectangle background->setArea(URect(cegui_reldim(0), cegui_reldim(0), cegui_reldim(1), cegui_reldim(1))); // disable frame and standard background background->setProperty("FrameEnabled", "false"); background->setProperty("BackgroundEnabled", "false"); // set the background image background->setProperty("Image", "SpaceBackgroundImage"); // install this as the root GUI sheet d_guiContext->setRootWindow(background); // set tooltip styles (by default there is none) d_guiContext->setDefaultTooltipType(SKIN "/Tooltip"); // load some demo windows and attach to the background 'root' background->addChild(winMgr.loadLayoutFromFile("TabControlDemo.layout")); TabControl* tc = static_cast<TabControl*>(background->getChild("Frame/TabControl")); // Add some pages to tab control tc->addTab(winMgr.loadLayoutFromFile("TabPage1.layout")); tc->addTab(winMgr.loadLayoutFromFile("TabPage2.layout")); WindowManager::getSingleton().DEBUG_dumpWindowNames("asd"); static_cast<PushButton*>( background->getChild("Frame/TabControl/Page1/AddTab"))->subscribeEvent( PushButton::EventClicked, Event::Subscriber(&TabControlDemo::handleAddTab, this)); // Click to visit this tab static_cast<PushButton*>( background->getChild("Frame/TabControl/Page1/Go"))->subscribeEvent( PushButton::EventClicked, Event::Subscriber(&TabControlDemo::handleGoto, this)); // Click to make this tab button visible (when scrolling is required) static_cast<PushButton*>( background->getChild("Frame/TabControl/Page1/Show"))->subscribeEvent( PushButton::EventClicked, Event::Subscriber(&TabControlDemo::handleShow, this)); static_cast<PushButton*>( background->getChild("Frame/TabControl/Page1/Del"))->subscribeEvent( PushButton::EventClicked, Event::Subscriber(&TabControlDemo::handleDel, this)); RadioButton* rb = static_cast<RadioButton*>( background->getChild("Frame/TabControl/Page1/TabPaneTop")); rb->setSelected(tc->getTabPanePosition() == TabControl::Top); rb->subscribeEvent( RadioButton::EventSelectStateChanged, Event::Subscriber(&TabControlDemo::handleTabPanePos, this)); rb = static_cast<RadioButton*>( background->getChild("Frame/TabControl/Page1/TabPaneBottom")); rb->setSelected(tc->getTabPanePosition() == TabControl::Bottom); rb->subscribeEvent( RadioButton::EventSelectStateChanged, Event::Subscriber(&TabControlDemo::handleTabPanePos, this)); Scrollbar* sb = static_cast<Scrollbar*>( background->getChild("Frame/TabControl/Page1/TabHeight")); sb->setScrollPosition(tc->getTabHeight().d_offset); sb->subscribeEvent( Scrollbar::EventScrollPositionChanged, Event::Subscriber(&TabControlDemo::handleTabHeight, this)); sb = static_cast<Scrollbar*>( background->getChild("Frame/TabControl/Page1/TabPadding")); sb->setScrollPosition(tc->getTabTextPadding().d_offset); sb->subscribeEvent( Scrollbar::EventScrollPositionChanged, Event::Subscriber(&TabControlDemo::handleTabPadding, this)); refreshPageList(); // From now on, we don't rely on the exceptions anymore, but perform nice (and recommended) checks // ourselves. return true; }
bool App::keyPressed(const SDL_KeyboardEvent &arg) { SDL_Scancode skey = arg.keysym.scancode; #define key(a) SDL_SCANCODE_##a /// Preview camera --------------------- if (edMode == ED_PrvCam) { switch (skey) { case key(ESCAPE): // exit case key(F7): togPrvCam(); break; case key(RETURN): // save screen { int u = pSet->allow_save ? pSet->gui.track_user : 1; rt[RTs-1].tex->writeContentsToFile(gcom->pathTrk[u] + pSet->gui.track + "/preview/view.jpg"); gcom->listTrackChng(gcom->trkList,0); // upd gui img gui->Status("Preview saved", 1,1,0); } break; case key(F12): // screenshot mWindow->writeContentsToTimestampedFile(PATHMANAGER::Screenshots() + "/", ".jpg"); return true; } return true; } // main menu keys Widget* wf = InputManager::getInstance().getKeyFocusWidget(); bool edFoc = wf && wf->getTypeName() == "EditBox"; if (pSet->isMain && bGuiFocus) { switch (skey) { case key(UP): case key(KP_8): pSet->inMenu = (pSet->inMenu-1+WND_ALL)%WND_ALL; gui->toggleGui(false); return true; case key(DOWN): case key(KP_2): pSet->inMenu = (pSet->inMenu+1)%WND_ALL; gui->toggleGui(false); return true; case key(RETURN): pSet->isMain = false; gui->toggleGui(false); return true; } } if (!pSet->isMain && bGuiFocus) { switch (skey) { case key(BACKSPACE): if (pSet->isMain) break; if (bGuiFocus) { if (edFoc) break; pSet->isMain = true; gui->toggleGui(false); } return true; } } // change gui tabs TabPtr tab = 0; TabControl* sub = 0; int iTab1 = 1; if (bGuiFocus && !pSet->isMain) switch (pSet->inMenu) { case WND_Track: tab = mWndTabsTrack; sub = gui->vSubTabsTrack[tab->getIndexSelected()]; break; case WND_Edit: tab = mWndTabsEdit; sub = gui->vSubTabsEdit[tab->getIndexSelected()]; break; case WND_Help: tab = sub = gui->vSubTabsHelp[1]; iTab1 = 0; break; case WND_Options: tab = mWndTabsOpts; sub = gui->vSubTabsOpts[tab->getIndexSelected()]; break; } bool bRoad = edMode == ED_Road && road && bEdit(); // global keys //------------------------------------------------------------------------------------------------------------------------------ switch (skey) { case key(ESCAPE): // quit if (pSet->escquit) { mShutDown = true; } return true; case key(F1): case key(GRAVE): if (ctrl) // context help (show for cur mode) { if (bMoveCam) gui->GuiShortcut(WND_Help, 1, 0); else switch (edMode) { case ED_Smooth: case ED_Height: case ED_Filter: case ED_Deform: gui->GuiShortcut(WND_Help, 1, 3); break; case ED_Road: gui->GuiShortcut(WND_Help, 1, 5); break; case ED_Start: gui->GuiShortcut(WND_Help, 1, 6); break; case ED_Fluids: gui->GuiShortcut(WND_Help, 1, 7); break; case ED_Objects: gui->GuiShortcut(WND_Help, 1, 8); break; default: gui->GuiShortcut(WND_Help, 1, 0); break; } } else // Gui mode, Options gui->toggleGui(true); return true; case key(F12): // screenshot mWindow->writeContentsToTimestampedFile(PATHMANAGER::Screenshots() + "/", ".jpg"); return true; // save, reload, update case key(F4): SaveTrack(); return true; case key(F5): LoadTrack(); return true; case key(F8): UpdateTrack(); return true; case key(F9): // blendmap if (alt) gui->ckAutoBlendmap.Invert(); else bTerUpdBlend = true; return true; // prev num tab (layers,grasses,models) case key(1): if (alt && !bRoad) { gui->NumTabNext(-1); return true; } break; // next num tab case key(2): if (alt && !bRoad) { gui->NumTabNext(1); return true; } break; case key(F2): // +-rt num if (alt) { pSet->num_mini = (pSet->num_mini - 1 + RTs+2) % (RTs+2); UpdMiniVis(); } else if (bGuiFocus && tab && !pSet->isMain) if (shift) // prev gui subtab { if (sub) { int num = sub->getItemCount(); sub->setIndexSelected( (sub->getIndexSelected() - 1 + num) % num ); } } else // prev gui tab { int num = tab->getItemCount()-1, i = tab->getIndexSelected(); if (i==iTab1) i = num; else --i; tab->setIndexSelected(i); if (iTab1==1) gcom->tabMainMenu(tab,i); } break; case key(F3): // tabs,sub if (alt) { pSet->num_mini = (pSet->num_mini + 1) % (RTs+2); UpdMiniVis(); } else if (bGuiFocus && tab && !pSet->isMain) if (shift) // next gui subtab { if (sub) { int num = sub->getItemCount(); sub->setIndexSelected( (sub->getIndexSelected() + 1) % num ); } } else // next gui tab { int num = tab->getItemCount()-1, i = tab->getIndexSelected(); if (i==num) i = iTab1; else ++i; tab->setIndexSelected(i); if (iTab1==1) gcom->tabMainMenu(tab,i); } break; case key(RETURN): // load track if (bGuiFocus) if (mWndTabsTrack->getIndexSelected() == 1 && !pSet->isMain && pSet->inMenu == WND_Track) gui->btnNewGame(0); break; // WireFrame F11 case key(F11): gui->ckWireframe.Invert(); return true; // Show Stats ctrl-I case key(I): if (ctrl) { gui->ckInputBar.Invert(); return true; } break; // Top view alt-Z case key(Z): if (alt) { gui->toggleTopView(); return true; } break; // load next track F6 case key(F6): if (pSet->check_load) { gui->iLoadNext = shift ? -1 : 1; return true; } break; } // GUI keys in edits --------------------- if (bGuiFocus && mGui && !alt && !ctrl) { InputManager::getInstance().injectKeyPress(KeyCode::Enum(mInputWrapper->sdl2OISKeyCode(arg.keysym.sym)), 0); return true; } /// Road keys * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * if (bRoad) { if (iSnap > 0 && !alt) switch (skey) { case key(1): road->AddRoll(-1,angSnap,alt); break; case key(2): road->AddRoll( 1,angSnap,alt); break; case key(3): road->AddYaw(-1,angSnap,alt); break; case key(4): road->AddYaw( 1,angSnap,alt); break; } switch (skey) { // choose 1 case key(SPACE): if (ctrl) road->CopyNewPoint(); else road->ChoosePoint(); break; // multi sel case key(BACKSPACE): if (alt) road->SelAll(); else if (ctrl) road->SelClear(); else road->SelAddPoint(); break; // ter on first,last case key(HOME): case key(KP_7): if (alt) road->MirrorSel(shift); else if (ctrl) road->FirstPoint(); else road->ToggleOnTerrain(); break; // cols case key(END): case key(KP_1): if (ctrl) road->LastPoint(); else road->ToggleColumns(); break; // prev,next case key(PAGEUP): case key(KP_9): if (shift) road->SelAddPoint(); road->PrevPoint(); break; case key(PAGEDOWN): case key(KP_3): if (shift) road->SelAddPoint(); road->NextPoint(); break; // del case key(DELETE): case key(KP_PERIOD): case key(KP_5): if (ctrl) road->DelSel(); else road->Delete(); break; // ins case key(INSERT): case key(KP_0): if (ctrl && !shift && !alt) { if (road->CopySel()) gui->Status("Copy",0.6,0.8,1.0); } else if (!ctrl && shift && !alt) road->Paste(); else if ( ctrl && shift && !alt) road->Paste(true); else { road->newP.pos.x = road->posHit.x; road->newP.pos.z = road->posHit.z; if (!sc->ter) road->newP.pos.y = road->posHit.y; //road->newP.aType = AT_Both; road->Insert(shift ? INS_Begin : ctrl ? INS_End : alt ? INS_CurPre : INS_Cur); } break; case key(0): if (ctrl) { road->Set1stChk(); break; } case key(EQUALS): road->ChgMtrId(1); break; case key(9): case key(MINUS): road->ChgMtrId(-1); break; case key(1): if (alt) if (shift) road->AngZero(); else road->ChgAngType(-1); break; case key(2): if (alt) road->ChgAngType(1); break; case key(7): road->ToggleLoopChk(); break; case key(8): road->ToggleOnPipe(); break; case key(5): iSnap = (iSnap-1+ciAngSnapsNum)%ciAngSnapsNum; angSnap = crAngSnaps[iSnap]; break; case key(6): iSnap = (iSnap+1)%ciAngSnapsNum; angSnap = crAngSnaps[iSnap]; break; case key(U): AlignTerToRoad(); break; // looped todo: finish set.. case key(N): road->isLooped = !road->isLooped; road->recalcTangents(); road->RebuildRoad(true); break; } } // ter brush shape if (edMode < ED_Road && !alt) switch (skey) { case key(K): if (ctrl) { mBrShape[curBr] = (EBrShape)((mBrShape[curBr]-1 + BRS_ALL) % BRS_ALL); updBrush(); } break; case key(L): if (ctrl) { mBrShape[curBr] = (EBrShape)((mBrShape[curBr]+1) % BRS_ALL); updBrush(); } break; case key(N): case key(COMMA): mBrOct[curBr] = std::max(1, mBrOct[curBr]-1); updBrush(); break; case key(M): case key(PERIOD): mBrOct[curBr] = std::min(7, mBrOct[curBr]+1); updBrush(); break; } // ter brush presets ---- if (edMode < ED_Road && alt && skey >= key(1) && skey <= key(0) && !bMoveCam) { // TODO int id = skey - key(1); if (shift) id += 10; SetBrushPreset(id); } // Fluids ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ if (edMode == ED_Fluids) { int fls = sc->fluids.size(); const std::vector<FluidParams>& dfl = data->fluids->fls; switch (skey) { // ins case key(INSERT): case key(KP_0): if (road && road->bHitTer) { FluidBox fb; fb.name = "water blue"; fb.pos = road->posHit; fb.rot = Vector3(0.f, 0.f, 0.f); fb.size = Vector3(50.f, 20.f, 50.f); fb.tile = Vector2(0.01f, 0.01f); sc->fluids.push_back(fb); sc->UpdateFluidsId(); iFlCur = sc->fluids.size()-1; bRecreateFluids = true; } break; } if (fls > 0) switch (skey) { // first, last case key(HOME): case key(KP_7): iFlCur = 0; UpdFluidBox(); break; case key(END): case key(KP_1): if (fls > 0) iFlCur = fls-1; UpdFluidBox(); break; // prev,next case key(PAGEUP): case key(KP_9): if (fls > 0) { iFlCur = (iFlCur-1+fls)%fls; } UpdFluidBox(); break; case key(PAGEDOWN): case key(KP_3): if (fls > 0) { iFlCur = (iFlCur+1)%fls; } UpdFluidBox(); break; // del case key(DELETE): case key(KP_PERIOD): case key(KP_5): if (fls == 1) sc->fluids.clear(); else sc->fluids.erase(sc->fluids.begin() + iFlCur); iFlCur = std::max(0, std::min(iFlCur, (int)sc->fluids.size()-1)); bRecreateFluids = true; break; // prev,next type case key(9): case key(MINUS): { FluidBox& fb = sc->fluids[iFlCur]; fb.id = (fb.id-1 + dfl.size()) % dfl.size(); fb.name = dfl[fb.id].name; bRecreateFluids = true; } break; case key(0): case key(EQUALS): { FluidBox& fb = sc->fluids[iFlCur]; fb.id = (fb.id+1) % dfl.size(); fb.name = dfl[fb.id].name; bRecreateFluids = true; } break; } } // Objects | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | if (edMode == ED_Objects) { int objs = sc->objects.size(), objAll = vObjNames.size(); switch (skey) { case key(SPACE): iObjCur = -1; PickObject(); UpdObjPick(); break; // prev,next type case key(9): case key(MINUS): SetObjNewType((iObjTNew-1 + objAll) % objAll); break; case key(0): case key(EQUALS): SetObjNewType((iObjTNew+1) % objAll); break; // ins case key(INSERT): case key(KP_0): if (ctrl) // copy selected { if (!vObjSel.empty()) { vObjCopy.clear(); for (std::set<int>::iterator it = vObjSel.begin(); it != vObjSel.end(); ++it) { vObjCopy.push_back(sc->objects[*it]); } gui->Status("Copy",0.6,0.8,1.0); } } else if (shift) // paste copied { if (!vObjCopy.empty()) { vObjSel.clear(); // unsel Object o = objNew; for (int i=0; i < vObjCopy.size(); ++i) { objNew = vObjCopy[i]; AddNewObj(false); vObjSel.insert(sc->objects.size()-1); // add it to sel } objNew = o; UpdObjSel(); UpdObjPick(); } } else if (road && road->bHitTer) // insert new { AddNewObj(); //iObjCur = sc->objects.size()-1; // auto select inserted- UpdObjPick(); } break; // sel case key(BACKSPACE): if (alt) // select all for (int i=0; i < objs; ++i) vObjSel.insert(i); else if (ctrl) vObjSel.clear(); // unsel all else if (iObjCur > -1) if (vObjSel.find(iObjCur) == vObjSel.end()) vObjSel.insert(iObjCur); // add to sel else vObjSel.erase(iObjCur); // unselect UpdObjSel(); break; } ::Object* o = iObjCur == -1 ? &objNew : ((iObjCur >= 0 && objs > 0 && iObjCur < objs) ? &sc->objects[iObjCur] : 0); switch (skey) { // first, last case key(HOME): case key(KP_7): iObjCur = 0; UpdObjPick(); break; case key(END): case key(KP_1): if (objs > 0) iObjCur = objs-1; UpdObjPick(); break; // prev,next case key(PAGEUP): case key(KP_9): if (objs > 0) { iObjCur = (iObjCur-1+objs)%objs; } UpdObjPick(); break; case key(PAGEDOWN): case key(KP_3): if (objs > 0) { iObjCur = (iObjCur+1)%objs; } UpdObjPick(); break; // del case key(DELETE): case key(KP_PERIOD): case key(KP_5): if (iObjCur >= 0 && objs > 0) { ::Object& o = sc->objects[iObjCur]; mSceneMgr->destroyEntity(o.ent); mSceneMgr->destroySceneNode(o.nd); if (objs == 1) sc->objects.clear(); else sc->objects.erase(sc->objects.begin() + iObjCur); iObjCur = std::min(iObjCur, (int)sc->objects.size()-1); UpdObjPick(); } break; // move,rot,scale case key(1): if (!shift) objEd = EO_Move; else if (o) { if (iObjCur == -1) // reset h { o->pos[2] = 0.f; o->SetFromBlt(); UpdObjPick(); } else if (road) // move to ter { const Vector3& v = road->posHit; o->pos[0] = v.x; o->pos[1] =-v.z; o->pos[2] = v.y + objNew.pos[2]; o->SetFromBlt(); UpdObjPick(); } } break; case key(2): if (!shift) objEd = EO_Rotate; else if (o) // reset rot { o->rot = QUATERNION<float>(0,1,0,0); o->SetFromBlt(); UpdObjPick(); } break; case key(3): if (!shift) objEd = EO_Scale; else if (o) // reset scale { o->scale = Vector3::UNIT_SCALE * (ctrl ? 0.5f : 1.f); o->nd->setScale(o->scale); UpdObjPick(); } break; } } // Rivers ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if (edMode == ED_Rivers) { // todo } /// Common Keys ************************************************************************************************************ if (alt) switch (skey) { case key(Q): gui->GuiShortcut(WND_Track, 1); return true; // Q Track case key(O): gui->GuiShortcut(WND_Track, 2); return true; // O Tools case key(J): gui->GuiShortcut(WND_Track, 3); return true; // J Warnings case key(S): gui->GuiShortcut(WND_Edit, 1); return true; // S Sun case key(H): gui->GuiShortcut(WND_Edit, 2); return true; // H Heightmap case key(D): gui->GuiShortcut(WND_Edit, 2,0); return true; // D -Brushes case key(T): gui->GuiShortcut(WND_Edit, 3); return true; // T Layers (Terrain) case key(B): gui->GuiShortcut(WND_Edit, 3,0); return true; // B -Blendmap case key(P): gui->GuiShortcut(WND_Edit, 3,1); return true; // P -Particles case key(U): gui->GuiShortcut(WND_Edit, 3,2); return true; // U -Surfaces case key(G): gui->GuiShortcut(WND_Edit, 4); return true; // G Grasses case key(V): gui->GuiShortcut(WND_Edit, 5); return true; // V Vegetation case key(M): gui->GuiShortcut(WND_Edit, 5,1); return true; // M -Models case key(R): gui->GuiShortcut(WND_Edit, 6); return true; // R Road case key(X): gui->GuiShortcut(WND_Edit, 7); return true; // X Objects case key(C): gui->GuiShortcut(WND_Options, 1); return true; // C Screen //case key(N): gui->GuiShortcut(WND_Options, 1,1); return true; // N --Vegetation ! case key(E): gui->GuiShortcut(WND_Options, 2); return true; // E View /Settings case key(K): gui->GuiShortcut(WND_Options, 2,3); return true; // K -Tweak case key(I): gui->GuiShortcut(WND_Help, 1); return true; // I Input/help } else switch (skey) { case key(TAB): // Camera / Edit mode if (!bGuiFocus && !alt) { bMoveCam = !bMoveCam; UpdVisGui(); UpdFluidBox(); UpdObjPick(); } break; // toggle fog, veget, weather case key(G): gui->ckFog.Invert(); break; case key(V): bTrGrUpd = true; break; case key(I): gui->ckWeather.Invert(); break; // terrain case key(D): if (bEdit()){ SetEdMode(ED_Deform); curBr = 0; updBrush(); UpdEditWnds(); } break; case key(S): if (bEdit()){ SetEdMode(ED_Smooth); curBr = 1; updBrush(); UpdEditWnds(); } break; case key(E): if (bEdit()){ SetEdMode(ED_Height); curBr = 2; updBrush(); UpdEditWnds(); } break; case key(F): if (bEdit()){ SetEdMode(ED_Filter); curBr = 3; updBrush(); UpdEditWnds(); } else // focus on find edit (global) if (ctrl && gcom->edTrkFind /*&& bGuiFocus && !pSet->isMain && pSet->inMenu == WND_Edit && mWndTabsEdit->getIndexSelected() == 1*/) { gui->GuiShortcut(WND_Track, 1); // Track tab InputManager::getInstance().resetKeyFocusWidget(); InputManager::getInstance().setKeyFocusWidget(gcom->edTrkFind); return true; } break; // road case key(R): if (bEdit()){ SetEdMode(ED_Road); UpdEditWnds(); } break; case key(B): if (road) { road->UpdPointsH(); road->RebuildRoad(true); } break; case key(T): if (mWndRoadStats) mWndRoadStats->setVisible(!mWndRoadStats->getVisible()); break; case key(M): if (edMode == ED_Road && road) road->ToggleMerge(); break; // start pos case key(Q): if (bEdit()){ SetEdMode(ED_Start); UpdEditWnds(); } break; case key(SPACE): if (edMode == ED_Start && road) road->iDir *= -1; break; // prv cam case key(F7): togPrvCam(); break; // fluids case key(W): if (bEdit()){ SetEdMode(ED_Fluids); UpdEditWnds(); } break; case key(F10): SaveWaterDepth(); break; // objects case key(C): if (edMode == ED_Objects) { objSim = !objSim; ToggleObjSim(); } break; case key(X): if (bEdit()){ SetEdMode(ED_Objects); UpdEditWnds(); } break; // rivers ///case key(A): if (bEdit()){ SetEdMode(ED_Rivers); UpdEditWnds(); } break; } return true; }
void GuiConfig::Build(ZProtoGUI *pGUI) { mGUI = (ZProtoGUI*)pGUI; root = mGUI->root; mFontArial8 = mGUI->mFontArial8; mFontArial24 = mGUI->mFontArial24; // Create a FrameWindow in the TaharezLook style, and name it 'Demo Window' mCondigWindow = (FrameWindow*)winMgr.createWindow("TaharezLook/FrameWindow", "Config Window"); mCondigWindow->setTitleBarEnabled(false); mCondigWindow->setCloseButtonEnabled(false); mCondigWindow->setSizingEnabled(false); root->addChildWindow(mCondigWindow); mCondigWindow->setAlpha(0.6f); mCondigWindow ->hide(); mCondigWindow->setSizingEnabled(false); FrameWindow* wnd1 = (FrameWindow*)winMgr.createWindow("TaharezLook/FrameWindow", "tabPage0"); wnd1->setTitleBarEnabled(false); wnd1->setFrameEnabled(false);//>setTitleBarEnabled(false); wnd1->setCloseButtonEnabled(false); wnd1->setText(GLoc->GetString("PLAYER").c_str()); FrameWindow* wnd2 = (FrameWindow*)winMgr.createWindow("TaharezLook/FrameWindow", "tabPage1"); wnd2->setTitleBarEnabled(false); wnd2->setFrameEnabled(false);//>setTitleBarEnabled(false); wnd2->setCloseButtonEnabled(false); wnd2->setText(GLoc->GetString("Controls").c_str()); FrameWindow* wnd3 = (FrameWindow*)winMgr.createWindow("TaharezLook/FrameWindow", "tabPage2"); wnd3->setTitleBarEnabled(false); wnd3->setCloseButtonEnabled(false); wnd3->setText(GLoc->GetString("Graphics").c_str()); wnd3->setFrameEnabled(false);// FrameWindow* wnd4 = (FrameWindow*)winMgr.createWindow("TaharezLook/FrameWindow", "tabPage3"); wnd4->setTitleBarEnabled(false); wnd4->setFrameEnabled(false);//>setTitleBarEnabled(false); wnd4->setCloseButtonEnabled(false); wnd4->setText(GLoc->GetString("SOUND").c_str()); //wnd->addChildWindow (winMgr.loadWindowLayout ("TabControlDemo.layout", "TabControlDemo/")); TabControl *tc = (TabControl *)winMgr.createWindow("TaharezLook/TabControl", "Config/Tabs"); mCondigWindow->setPosition(UVector2(cegui_reldim(0.f), cegui_reldim( 0.f))); mCondigWindow->setSize(UVector2(cegui_reldim(1.f), cegui_reldim( 0.9f))); tc->setArea(UVector2(cegui_reldim(0.1f), cegui_reldim( 0.05f)), UVector2(cegui_reldim(0.9f), cegui_reldim( 0.85f)) ); // Add some pages to tab control tc->addTab (wnd1); tc->addTab (wnd2); tc->addTab (wnd3); tc->addTab (wnd4); tc->setTabHeight(UDim (0.06f, 0.13f)); tc->setTabTextPadding(UDim (0.06f, 0.1f)); mCondigWindow->addChildWindow(tc); mCondigWindow->setPosition(UVector2(cegui_reldim(0), cegui_reldim( 0.15f))); mCondigWindow->setSize(UVector2(cegui_reldim(1.1f), cegui_reldim( 0.70f))); mCondigWindow->setAlpha(0.88f); wnd1->setPosition(UVector2(cegui_reldim(0.0f), cegui_reldim( 0.0f))); wnd1->setSize(UVector2(cegui_reldim(1.f), cegui_reldim( 1.f))); wnd2->setPosition(UVector2(cegui_reldim(0.0f), cegui_reldim( 0.0f))); wnd2->setSize(UVector2(cegui_reldim(1.f), cegui_reldim( 1.f))); wnd3->setPosition(UVector2(cegui_reldim(0.0f), cegui_reldim( 0.0f))); wnd3->setSize(UVector2(cegui_reldim(1.f), cegui_reldim( 1.f))); wnd4->setPosition(UVector2(cegui_reldim(0.0f), cegui_reldim( 0.0f))); wnd4->setSize(UVector2(cegui_reldim(1.f), cegui_reldim( 1.f))); // controls for (int allCtrl = 0;allCtrl<sizeof(aCtrlList)/sizeof(CTRLEntry); allCtrl++) { static const float interligne = 0.06f*1.6f; static const float intersize = 0.05f*1.4f; tstring numb; numb.Printf("%d", allCtrl); Window* txtlib = winMgr.createWindow("TaharezLook/StaticText", String(aCtrlList[allCtrl].mName)+String("CtrlLib")+String(numb.c_str())); txtlib->setText(GLoc->GetString(aCtrlList[allCtrl].mName).c_str()); txtlib->setProperty("FrameEnabled", "false"); txtlib->setProperty("BackgroundEnabled", "false"); //txtlib->setHorizontalAlignment(HA_CENTRE); txtlib->setPosition(UVector2(cegui_reldim(0.05f), cegui_reldim( 0.01f + interligne*allCtrl))); txtlib->setSize(UVector2(cegui_reldim(0.19f), cegui_reldim( intersize ))); wnd2->addChildWindow(txtlib); PushButton* txtBut = (PushButton*)winMgr.createWindow("TaharezLook/Button", String(aCtrlList[allCtrl].mName)+String("CtrlBut")+String(numb.c_str())); txtBut->setPosition(UVector2(cegui_reldim(0.2f), cegui_reldim( 0.01f + interligne*allCtrl))); txtBut->setSize(UVector2(cegui_reldim(0.50f), cegui_reldim( intersize ))); SetBindedControlString(allCtrl, txtBut); //txtBut->setText("A or PAD Button 1"); txtBut->setHorizontalAlignment(HA_CENTRE); wnd2->addChildWindow(txtBut); txtBut->subscribeEvent ( PushButton::EventClicked, Event::Subscriber (&GuiConfig::handleConfigControlsBut, this)); txtBut->setID(allCtrl); aCtrlList[allCtrl].mWindow = (Window*)txtBut; } // -- PLAYER Editbox* playerName = static_cast<Editbox*>(winMgr.createWindow("TaharezLook/Editbox", "CONFIGPLAYERNAME")); wnd1->addChildWindow(playerName); playerName->setPosition(UVector2(cegui_reldim(0.3f), cegui_reldim( 0.05f))); playerName->setSize(UVector2(cegui_reldim(0.3f), cegui_reldim( 0.08f))); //playerName->setValidationString("*"); playerName->setText(GConfig->GetPlayerName()); Window* txtlib = winMgr.createWindow("TaharezLook/StaticText", "CONFIGPLAYERNAMESTATIC"); txtlib->setText(GLoc->GetString("PLAYERNAME").c_str()); txtlib->setProperty("FrameEnabled", "false"); txtlib->setProperty("BackgroundEnabled", "false"); txtlib->setPosition(UVector2(cegui_reldim(0.05f), cegui_reldim( 0.05f))); txtlib->setSize(UVector2(cegui_reldim(0.24f), cegui_reldim( 0.08f ))); wnd1->addChildWindow(txtlib); // -- // -- SOUND Scrollbar* sfxslider = static_cast<Scrollbar*>(winMgr.createWindow("TaharezLook/HorizontalScrollbar", "SFXVOLUME")); sfxslider->setPosition(UVector2(cegui_reldim(0.3f), cegui_reldim( 0.05f))); sfxslider->setSize(UVector2(cegui_reldim(0.6f), cegui_reldim( 0.08f))); sfxslider->setDocumentSize (100); sfxslider->subscribeEvent ( Scrollbar::EventScrollPositionChanged, Event::Subscriber (&GuiConfig::handleSFXVolChanged, this)); sfxslider->setScrollPosition(float(GConfig->GetQuality("SFXVOLUME"))); wnd4->addChildWindow(sfxslider); Window* txtlibsfx = winMgr.createWindow("TaharezLook/StaticText", "SFXVOLUMESTATIC"); txtlibsfx->setText(GLoc->GetString("SFXVOLUME").c_str()); txtlibsfx->setProperty("FrameEnabled", "false"); txtlibsfx->setProperty("BackgroundEnabled", "false"); txtlibsfx->setPosition(UVector2(cegui_reldim(0.05f), cegui_reldim( 0.05f))); txtlibsfx->setSize(UVector2(cegui_reldim(0.24f), cegui_reldim( 0.08f ))); wnd4->addChildWindow(txtlibsfx); Scrollbar* musicslider = static_cast<Scrollbar*>(winMgr.createWindow("TaharezLook/HorizontalScrollbar", "MUSICVOLUME")); musicslider->setPosition(UVector2(cegui_reldim(0.3f), cegui_reldim( 0.15f))); musicslider->setSize(UVector2(cegui_reldim(0.6f), cegui_reldim( 0.08f))); musicslider->setDocumentSize (100); musicslider->subscribeEvent ( Scrollbar::EventScrollPositionChanged, Event::Subscriber (&GuiConfig::handleMusicVolChanged, this)); musicslider->setScrollPosition(float(GConfig->GetQuality("MUSICVOLUME"))); wnd4->addChildWindow(musicslider); Window* txtlibmusic = winMgr.createWindow("TaharezLook/StaticText", "MUSICVOLUMESTATIC"); txtlibmusic->setText(GLoc->GetString("MUSICVOLUME").c_str()); txtlibmusic->setProperty("FrameEnabled", "false"); txtlibmusic->setProperty("BackgroundEnabled", "false"); txtlibmusic->setPosition(UVector2(cegui_reldim(0.05f), cegui_reldim( 0.15f))); txtlibmusic->setSize(UVector2(cegui_reldim(0.24f), cegui_reldim( 0.08f ))); wnd4->addChildWindow(txtlibmusic); Checkbox* checkMusic = static_cast<Checkbox*>(winMgr.createWindow("TaharezLook/Checkbox", "CHKMUSIC")); wnd4->addChildWindow(checkMusic); checkMusic->setPosition(UVector2(cegui_reldim(0.05f), cegui_reldim( 0.25f))); checkMusic->setSize(UVector2(cegui_reldim(0.24f), cegui_reldim( 0.08f ))); checkMusic->setText(GLoc->GetString("CHKMUSIC").c_str()); checkMusic->subscribeEvent ( Checkbox::EventCheckStateChanged, Event::Subscriber (&GuiConfig::handleChkMusicChanged, this)); checkMusic->setSelected (GConfig->IsEnable("CHKMUSIC")); // -- // -- VIDEO Combobox* cbresolution = static_cast<Combobox*>(winMgr.createWindow("TaharezLook/Combobox", "RESOLUTION")); wnd3->addChildWindow(cbresolution); cbresolution->setPosition(UVector2(cegui_reldim(0.3f), cegui_reldim( 0.05f))); cbresolution->setSize(UVector2(cegui_reldim(0.24f), cegui_reldim( 0.75f))); cbresolution->setReadOnly(true); Window* txtres = winMgr.createWindow("TaharezLook/StaticText", "RESOLUTIONTXT"); txtres->setText(GLoc->GetString("RESOLUTION").c_str()); txtres->setProperty("FrameEnabled", "false"); txtres->setProperty("BackgroundEnabled", "false"); txtres->setPosition(UVector2(cegui_reldim(0.05f), cegui_reldim( 0.05f))); txtres->setSize(UVector2(cegui_reldim(0.24f), cegui_reldim( 0.08f ))); wnd3->addChildWindow(txtres); int optWidth = GConfig->GetQuality("Width"); int optHeight = GConfig->GetQuality("Height"); int awidth = -1, aheight = -1; int avresolutions = 0; for (unsigned int rs = 0;rs<GDD->GetNbPossibleResolutions(); rs++) { char tmps[512]; int width, height; GDD->GetResolution(rs, width, height); if ((awidth != width) || (aheight != height)) { awidth = width; aheight = height; mResolutions.push_back(resval_t(width, height)); snprintf(tmps, 512, "%d x %d", width, height); cbresolution->addItem (new ListboxTextItem(tmps)); if ((width == optWidth)&&(height == optHeight)) CEGUICBSel(cbresolution, avresolutions); avresolutions++; } } // -- Checkbox* checkFS = static_cast<Checkbox*>(winMgr.createWindow("TaharezLook/Checkbox", "CHKBFS")); wnd3->addChildWindow(checkFS); checkFS->setPosition(UVector2(cegui_reldim(0.05f), cegui_reldim( 0.15f))); checkFS->setSize(UVector2(cegui_reldim(0.24f), cegui_reldim( 0.08f ))); checkFS->setText(GLoc->GetString("FULLSCREEN").c_str()); //checkFS->subscribeEvent ( Checkbox::EventCheckStateChanged, Event::Subscriber (&GuiConfig::handleFSChanged, this)); checkFS->setSelected (GConfig->IsEnable("CHKBFS")); Checkbox* checkVSync = static_cast<Checkbox*>(winMgr.createWindow("TaharezLook/Checkbox", "CHKBVSYNC")); wnd3->addChildWindow(checkVSync); checkVSync->setPosition(UVector2(cegui_reldim(0.05f), cegui_reldim( 0.75f))); checkVSync->setSize(UVector2(cegui_reldim(0.24f), cegui_reldim( 0.08f ))); checkVSync->setText(GLoc->GetString("VSYNC").c_str()); //checkVSync->subscribeEvent ( Checkbox::EventCheckStateChanged, Event::Subscriber (&GuiConfig::handleVSYNCChanged, this)); checkVSync->setSelected (GConfig->IsEnable("CHKBVSYNC")); // -- Combobox* cbshad = static_cast<Combobox*>(winMgr.createWindow("TaharezLook/Combobox", "SHADOWQUALITY")); wnd3->addChildWindow(cbshad); cbshad->setPosition(UVector2(cegui_reldim(0.3f), cegui_reldim( 0.25f))); cbshad->setSize(UVector2(cegui_reldim(0.24f), cegui_reldim( 0.33f))); cbshad->setReadOnly(true); Window* txtshad = winMgr.createWindow("TaharezLook/StaticText", "SHADOWQUALITYTXT"); txtshad->setText(GLoc->GetString("SHADOWQUALITY").c_str()); txtshad->setProperty("FrameEnabled", "false"); txtshad->setProperty("BackgroundEnabled", "false"); txtshad->setPosition(UVector2(cegui_reldim(0.05f), cegui_reldim( 0.25f))); txtshad->setSize(UVector2(cegui_reldim(0.24f), cegui_reldim( 0.08f ))); wnd3->addChildWindow(txtshad); cbshad->addItem (new ListboxTextItem(GLoc->GetString("DISABLED").c_str())); cbshad->addItem (new ListboxTextItem(GLoc->GetString("MEDIUM").c_str())); cbshad->addItem (new ListboxTextItem(GLoc->GetString("HIGH").c_str())); cbshad->addItem (new ListboxTextItem(GLoc->GetString("VERYHIGH").c_str())); cbshad->subscribeEvent ( Combobox::EventListSelectionAccepted, Event::Subscriber (&GuiConfig::handleShadowQualityChanged, this)); CEGUICBSel(cbshad, GConfig->GetQuality("SHADOWQUALITY")); // -- Combobox* cbrefl = static_cast<Combobox*>(winMgr.createWindow("TaharezLook/Combobox", "REFLECTIONQUALITY")); wnd3->addChildWindow(cbrefl); cbrefl->setPosition(UVector2(cegui_reldim(0.3f), cegui_reldim( 0.35f))); cbrefl->setSize(UVector2(cegui_reldim(0.24f), cegui_reldim( 0.33f))); cbrefl->setReadOnly(true); Window* txtrefl = winMgr.createWindow("TaharezLook/StaticText", "REFLECTIONQUALITYTXT"); txtrefl->setText(GLoc->GetString("REFLECTIONQUALITY").c_str()); txtrefl->setProperty("FrameEnabled", "false"); txtrefl->setProperty("BackgroundEnabled", "false"); txtrefl->setPosition(UVector2(cegui_reldim(0.05f), cegui_reldim( 0.35f))); txtrefl->setSize(UVector2(cegui_reldim(0.24f), cegui_reldim( 0.08f ))); wnd3->addChildWindow(txtrefl); cbrefl->addItem (new ListboxTextItem(GLoc->GetString("DISABLED").c_str())); cbrefl->addItem (new ListboxTextItem(GLoc->GetString("MEDIUM").c_str())); cbrefl->addItem (new ListboxTextItem(GLoc->GetString("HIGH").c_str())); cbrefl->addItem (new ListboxTextItem(GLoc->GetString("VERYHIGH").c_str())); cbrefl->subscribeEvent ( Combobox::EventListSelectionAccepted, Event::Subscriber (&GuiConfig::handleReflectionQualityChanged, this)); CEGUICBSel(cbrefl, GConfig->GetQuality("REFLECTIONQUALITY")); // -- Combobox* cbwater = static_cast<Combobox*>(winMgr.createWindow("TaharezLook/Combobox", "WATERQUALITY")); wnd3->addChildWindow(cbwater); cbwater->setPosition(UVector2(cegui_reldim(0.3f), cegui_reldim( 0.45f))); cbwater->setSize(UVector2(cegui_reldim(0.24f), cegui_reldim( 0.33f))); cbwater->setReadOnly(true); Window* txtwater = winMgr.createWindow("TaharezLook/StaticText", "WATERQUALITYTXT"); txtwater->setText(GLoc->GetString("WATERQUALITY").c_str()); txtwater->setProperty("FrameEnabled", "false"); txtwater->setProperty("BackgroundEnabled", "false"); txtwater->setPosition(UVector2(cegui_reldim(0.05f), cegui_reldim( 0.45f))); txtwater->setSize(UVector2(cegui_reldim(0.24f), cegui_reldim( 0.08f ))); wnd3->addChildWindow(txtwater); cbwater->addItem (new ListboxTextItem(GLoc->GetString("LOW").c_str())); cbwater->addItem (new ListboxTextItem(GLoc->GetString("MEDIUM").c_str())); cbwater->addItem (new ListboxTextItem(GLoc->GetString("HIGH").c_str())); cbwater->addItem (new ListboxTextItem(GLoc->GetString("VERYHIGH").c_str())); cbwater->subscribeEvent ( Combobox::EventListSelectionAccepted, Event::Subscriber (&GuiConfig::handleWaterQualityChanged, this)); CEGUICBSel(cbwater, GConfig->GetQuality("WATERQUALITY")); // -- Checkbox* checkDOF = static_cast<Checkbox*>(winMgr.createWindow("TaharezLook/Checkbox", "CHKDOF")); wnd3->addChildWindow(checkDOF); checkDOF->setPosition(UVector2(cegui_reldim(0.05f), cegui_reldim( 0.55f))); checkDOF->setSize(UVector2(cegui_reldim(0.24f), cegui_reldim( 0.08f ))); checkDOF->setText(GLoc->GetString("DEPTHOFFIELD").c_str()); checkDOF->subscribeEvent ( Checkbox::EventCheckStateChanged, Event::Subscriber (&GuiConfig::handleDOFChanged, this)); checkDOF->setSelected (GConfig->IsEnable("CHKDOF")); Checkbox* checkMBLUR = static_cast<Checkbox*>(winMgr.createWindow("TaharezLook/Checkbox", "CHKMBLUR")); wnd3->addChildWindow(checkMBLUR); checkMBLUR->setPosition(UVector2(cegui_reldim(0.05f), cegui_reldim( 0.65f))); checkMBLUR->setSize(UVector2(cegui_reldim(0.24f), cegui_reldim( 0.08f ))); checkMBLUR->setText(GLoc->GetString("MOTIONBLUR").c_str()); checkMBLUR->subscribeEvent ( Checkbox::EventCheckStateChanged, Event::Subscriber (&GuiConfig::handleMBLURChanged, this)); checkMBLUR->setSelected (GConfig->IsEnable("CHKMBLUR")); /* Resolution Enable FullScreen shadows quality (disabled, medium, high, ultrahigh) 0, 1024, 2048, 4096 reflection quality (disabled, low, medium, high) 0, 256, 512, 1024 water quality (low, medium, high, ultra high) enable Depth of field enable motion blur */ // -- PushButton* btn = static_cast<PushButton*>(winMgr.createWindow("TaharezLook/Button", "configOK")); mCondigWindow->addChildWindow(btn); btn->setPosition(UVector2(cegui_reldim(0.77f), cegui_reldim( 0.90f))); btn->setSize(UVector2(cegui_reldim(0.20f), cegui_reldim( 0.065f))); btn->setText("OK"); btn->subscribeEvent(PushButton::EventClicked, Event::Subscriber(&GuiConfig::HandleConfigOK, this)); }
void TabItem::setButtonWidth(int _width) { TabControl* owner = getParent() != nullptr ? getParent()->castType<TabControl>(false) : nullptr; if (owner != nullptr) owner->setButtonWidth(this, _width); }
void SubEventShopCityChild(Window* pageWnd) { TabControl* tbc = WTabControl(pageWnd); // tbc->subscribeEvent(TabControl::EventSelectionChanged,CEGUI::SubscriberSlot(OnShopCityChildTabContentSelChanged)); }
/*************************************************************************ech Sample specific initialisation goes here. *************************************************************************/ bool MenuNavigationSample::initialise(CEGUI::GUIContext* gui_context) { using namespace CEGUI; d_usedFiles = CEGUI::String(__FILE__); SchemeManager::getSingleton().createFromFile("TaharezLook.scheme"); gui_context->getCursor().setDefaultImage("TaharezLook/MouseArrow"); WindowManager& win_mgr = WindowManager::getSingleton(); d_root = win_mgr.loadLayoutFromFile("MenuNavigationSample.layout"); FontManager::FontList loadedFonts = FontManager::getSingleton().createFromFile("DejaVuSans-12.font"); Font* defaultFont = loadedFonts.empty() ? 0 : loadedFonts.front(); gui_context->setDefaultFont(defaultFont); gui_context->setRootWindow(d_root); MatrixNavigationStrategy* d_matrixNavigationStrategy = new MatrixNavigationStrategy(); d_matrixWindowNavigator = new WindowNavigator(createMatrixNavigationMappings(), d_matrixNavigationStrategy); gui_context->setWindowNavigator(d_matrixWindowNavigator); LinearNavigationStrategy* d_linearNavigatorStrategy = new LinearNavigationStrategy(); d_linearWindowNavigator = new WindowNavigator(createLinearNavigationMappings(), d_linearNavigatorStrategy); TabControl* tabControl = static_cast<TabControl*>(d_root->getChild("FrameWindow/TabControl")); tabControl->subscribeEvent(TabControl::EventSelectionChanged, Event::Subscriber(&MenuNavigationSample::handleTabSelectionChanged, this)); Window* page1Window = win_mgr.loadLayoutFromFile("MenuNavigationSampleTabPage1.layout"); d_logWidget1 = page1Window->getChild("StaticText"); d_logWidget1->setText("OK"); // 4 rows d_matrixNavigationStrategy->d_windows.resize(4); for (int i = 1; i <= 16; ++i) { std::ostringstream os; os << "Button" << i; PushButton* button = static_cast<PushButton*>(page1Window->getChild(os.str())); button->subscribeEvent(PushButton::EventClicked, Event::Subscriber(&MenuNavigationSample::handleNumberButtonClicked, this)); d_matrixNavigationStrategy->d_windows.at((i - 1) % 4).push_back(button); } tabControl->addTab(page1Window); Window* page2Window = win_mgr.loadLayoutFromFile("MenuNavigationSampleTabPage2.layout"); d_logWidget2 = page2Window->getChild("StaticText"); d_logWidget2->setText("OK"); Window* selectButton = page2Window->getChild("SelectButton"); selectButton->subscribeEvent(PushButton::EventClicked, Event::Subscriber(&MenuNavigationSample::handleSelectButtonClicked, this)); tabControl->addTab(page2Window); d_classesList = static_cast<ListWidget*>(page2Window->getChild("ClassesList")); d_classesList->setMultiSelectEnabled(true); initialiseClasses(d_classesList); d_linearNavigatorStrategy->d_windows.push_back(d_classesList); d_linearNavigatorStrategy->d_windows.push_back(selectButton); return true; }
void refreshPageList() { Window* root = d_guiContext->getRootWindow(); // Check if the windows exists Listbox* lbox = 0; TabControl* tc = 0; if (root->isChild("Frame/TabControl/Page1/PageList")) { lbox = static_cast<Listbox*>(root->getChild( "Frame/TabControl/Page1/PageList")); } if (root->isChild("Frame/TabControl")) { tc = static_cast<TabControl*>(root->getChild( "Frame/TabControl")); } if (lbox && tc) { lbox->resetList(); for (size_t i = 0; i < tc->getTabCount(); i++) { lbox->addItem(new MyListItem( tc->getTabContentsAtIndex(i)->getName())); } } }