Page 1 of 1

Menu fixed

Posted: Mon Nov 01, 2010 13:35
by VitaliBR
I wanted to make a menu with only letters, something like this:

Image

I thought about creating a FrameWindow, and leave it with the 0.0 Alpha, and Alpha texts for 1.0f
But how do I turn the text to buttons?
And how to fix the framewindow nobody move around or change its size?

Thanks

Re: Menu fixed

Posted: Mon Nov 01, 2010 13:46
by Kulik
Use a DefaultWindow and put static text widgets inside. React to EventMouseClicked. You could alternatively use Button widget and alter it's looknfeel.

Re: Menu fixed

Posted: Mon Nov 01, 2010 14:24
by VitaliBR
Thanks

I'm using OgreTray, in looknfeel the Static Text is:

Code: Select all

<!--
:::: StaticText
-->
    <WidgetLook name="OgreTray/StaticText">
        <Property name="BackgroundEnabled" value="True" />
        <Property name="FrameEnabled" value="True" />
        <Property name="TextColours" value="tl:FF000000 tr:FF000000 bl:FF000000 br:FF000000" />
        <Property name="HorzFormatting" value="WordWrapLeftAligned" />
        <NamedArea name="WithFrameTextRenderArea">
            <Area>
                <Dim type="LeftEdge" >
                    <ImageDim imageset="OgreTrayImages" image="TextBoxL" dimension="Width" />
                </Dim>
                <Dim type="TopEdge" >
                    <ImageDim imageset="OgreTrayImages" image="TextBoxT" dimension="Height" />
                </Dim>
                <Dim type="RightEdge" >
                    <UnifiedDim scale="1.0" type="RightEdge">
                        <DimOperator op="Subtract">
                            <ImageDim imageset="OgreTrayImages" image="TextBoxR" dimension="Width" />
                        </DimOperator>
                    </UnifiedDim>
                </Dim>
                <Dim type="BottomEdge" >
                    <UnifiedDim scale="1.0" type="BottomEdge">
                        <DimOperator op="Subtract">
                            <ImageDim imageset="OgreTrayImages" image="TextBoxB" dimension="Height" />
                        </DimOperator>
                    </UnifiedDim>
                </Dim>
            </Area>
        </NamedArea>
        <NamedArea name="WithFrameTextRenderAreaHScroll">
            <Area>
                <Dim type="LeftEdge" >
                    <ImageDim imageset="OgreTrayImages" image="TextBoxL" dimension="Width" />
                </Dim>
                <Dim type="TopEdge" >
                    <ImageDim imageset="OgreTrayImages" image="TextBoxT" dimension="Height" />
                </Dim>
                <Dim type="RightEdge" >
                    <UnifiedDim scale="1.0" type="RightEdge">
                        <DimOperator op="Subtract">
                            <ImageDim imageset="OgreTrayImages" image="TextBoxR" dimension="Width" />
                        </DimOperator>
                    </UnifiedDim>
                </Dim>
                <Dim type="BottomEdge" >
                    <UnifiedDim scale="1.0" type="BottomEdge">
                        <DimOperator op="Subtract">
                            <ImageDim imageset="OgreTrayImages" image="TextBoxB" dimension="Height">
                                <DimOperator op="Add">
                                    <ImageDim imageset="OgreTrayImages" image="Handle" dimension="Height" />
                                </DimOperator>
                            </ImageDim>
                        </DimOperator>
                    </UnifiedDim>
                </Dim>
            </Area>
        </NamedArea>
        <NamedArea name="WithFrameTextRenderAreaVScroll">
            <Area>
                <Dim type="LeftEdge" >
                    <ImageDim imageset="OgreTrayImages" image="TextBoxL" dimension="Width" />
                </Dim>
                <Dim type="TopEdge" >
                    <ImageDim imageset="OgreTrayImages" image="TextBoxT" dimension="Height" />
                </Dim>
                <Dim type="RightEdge" >
                    <UnifiedDim scale="1.0" type="RightEdge">
                        <DimOperator op="Subtract">
                            <ImageDim imageset="OgreTrayImages" image="TextBoxR" dimension="Width">
                                <DimOperator op="Add">
                                    <ImageDim imageset="OgreTrayImages" image="Handle" dimension="Width" />
                                </DimOperator>
                            </ImageDim>
                        </DimOperator>
                    </UnifiedDim>
                </Dim>
                <Dim type="BottomEdge" >
                    <UnifiedDim scale="1.0" type="BottomEdge">
                        <DimOperator op="Subtract">
                            <ImageDim imageset="OgreTrayImages" image="TextBoxB" dimension="Height" />
                        </DimOperator>
                    </UnifiedDim>
                </Dim>
            </Area>
        </NamedArea>
        <NamedArea name="WithFrameTextRenderAreaHVScroll">
            <Area>
                <Dim type="LeftEdge" >
                    <ImageDim imageset="OgreTrayImages" image="TextBoxL" dimension="Width" />
                </Dim>
                <Dim type="TopEdge" >
                    <ImageDim imageset="OgreTrayImages" image="TextBoxT" dimension="Height" />
                </Dim>
                <Dim type="RightEdge" >
                    <UnifiedDim scale="1.0" type="RightEdge">
                        <DimOperator op="Subtract">
                            <ImageDim imageset="OgreTrayImages" image="TextBoxR" dimension="Width">
                                <DimOperator op="Add">
                                    <ImageDim imageset="OgreTrayImages" image="Handle" dimension="Width" />
                                </DimOperator>
                            </ImageDim>
                        </DimOperator>
                    </UnifiedDim>
                </Dim>
                <Dim type="BottomEdge" >
                    <UnifiedDim scale="1.0" type="BottomEdge">
                        <DimOperator op="Subtract">
                            <ImageDim imageset="OgreTrayImages" image="TextBoxB" dimension="Height">
                                <DimOperator op="Add">
                                    <ImageDim imageset="OgreTrayImages" image="Handle" dimension="Height" />
                                </DimOperator>
                            </ImageDim>
                        </DimOperator>
                    </UnifiedDim>
                </Dim>
            </Area>
        </NamedArea>
        <NamedArea name="NoFrameTextRenderArea">
            <Area>
                <Dim type="LeftEdge" >
                    <AbsoluteDim value="0" />
                </Dim>
                <Dim type="TopEdge" >
                    <AbsoluteDim value="0" />
                </Dim>
                <Dim type="RightEdge" >
                    <UnifiedDim scale="1.0" type="RightEdge" />
                </Dim>
                <Dim type="BottomEdge" >
                    <UnifiedDim scale="1.0" type="BottomEdge" />
                </Dim>
            </Area>
        </NamedArea>
        <NamedArea name="NoFrameTextRenderAreaHScroll">
            <Area>
                <Dim type="LeftEdge" >
                    <AbsoluteDim value="0" />
                </Dim>
                <Dim type="TopEdge" >
                    <AbsoluteDim value="0" />
                </Dim>
                <Dim type="RightEdge" >
                    <UnifiedDim scale="1.0" type="RightEdge" />
                </Dim>
                <Dim type="BottomEdge" >
                    <UnifiedDim scale="1.0" type="BottomEdge">
                        <DimOperator op="Subtract">
                            <ImageDim imageset="OgreTrayImages" image="TextBoxB" dimension="Height">
                                <DimOperator op="Add">
                                    <ImageDim imageset="OgreTrayImages" image="Handle" dimension="Height" />
                                </DimOperator>
                            </ImageDim>
                        </DimOperator>
                    </UnifiedDim>
                </Dim>
            </Area>
        </NamedArea>
        <NamedArea name="NoFrameTextRenderAreaVScroll">
            <Area>
                <Dim type="LeftEdge" >
                    <AbsoluteDim value="0" />
                </Dim>
                <Dim type="TopEdge" >
                    <AbsoluteDim value="0" />
                </Dim>
                <Dim type="RightEdge" >
                    <UnifiedDim scale="1.0" type="RightEdge">
                        <DimOperator op="Subtract">
                            <ImageDim imageset="OgreTrayImages" image="TextBoxR" dimension="Width">
                                <DimOperator op="Add">
                                    <ImageDim imageset="OgreTrayImages" image="Handle" dimension="Width" />
                                </DimOperator>
                            </ImageDim>
                        </DimOperator>
                    </UnifiedDim>
                </Dim>
                <Dim type="BottomEdge" >
                    <UnifiedDim scale="1.0" type="BottomEdge" />
                </Dim>
            </Area>
        </NamedArea>
        <NamedArea name="NoFrameTextRenderAreaHVScroll">
            <Area>
                <Dim type="LeftEdge" >
                    <AbsoluteDim value="0" />
                </Dim>
                <Dim type="TopEdge" >
                    <AbsoluteDim value="0" />
                </Dim>
                <Dim type="RightEdge" >
                    <UnifiedDim scale="1.0" type="RightEdge">
                        <DimOperator op="Subtract">
                            <ImageDim imageset="OgreTrayImages" image="TextBoxR" dimension="Width">
                                <DimOperator op="Add">
                                    <ImageDim imageset="OgreTrayImages" image="Handle" dimension="Width" />
                                </DimOperator>
                            </ImageDim>
                        </DimOperator>
                    </UnifiedDim>
                </Dim>
                <Dim type="BottomEdge" >
                    <UnifiedDim scale="1.0" type="BottomEdge">
                        <DimOperator op="Subtract">
                            <ImageDim imageset="OgreTrayImages" image="TextBoxB" dimension="Height">
                                <DimOperator op="Add">
                                    <ImageDim imageset="OgreTrayImages" image="Handle" dimension="Height" />
                                </DimOperator>
                            </ImageDim>
                        </DimOperator>
                    </UnifiedDim>
                </Dim>
            </Area>
        </NamedArea>
        <Child type="OgreTray/HorizontalScrollbar" nameSuffix="__auto_hscrollbar__">
            <Area>
                <Dim type="LeftEdge" ><ImageDim imageset="OgreTrayImages" image="TextBoxL" dimension="Width" /></Dim>
                <Dim type="TopEdge" >
                    <AbsoluteDim value="0">
                        <DimOperator op="Subtract">
                            <ImageDim imageset="OgreTrayImages" image="TextBoxB" dimension="Height" />
                        </DimOperator>
                    </AbsoluteDim>
                </Dim>
                <Dim type="RightEdge" >
                    <UnifiedDim scale="1" type="Width">
                        <DimOperator op="Subtract">
                            <ImageDim imageset="OgreTrayImages" image="TextBoxR" dimension="Width">
                                <DimOperator op="Add">
                                    <ImageDim imageset="OgreTrayImages" image="Handle" dimension="Width" />
                                </DimOperator>
                            </ImageDim>
                        </DimOperator>
                    </UnifiedDim>
                </Dim>
                <Dim type="Height" ><ImageDim imageset="OgreTrayImages" image="Handle" dimension="Height" /></Dim>
            </Area>
            <VertAlignment type="BottomAligned" />
            <Property name="NonClient" value="True" />
        </Child>
        <Child type="OgreTray/VerticalScrollbar" nameSuffix="__auto_vscrollbar__">
            <Area>
                <Dim type="LeftEdge" >
                    <AbsoluteDim value="0">
                        <DimOperator op="Subtract">
                            <ImageDim imageset="OgreTrayImages" image="TextBoxR" dimension="Width" />
                        </DimOperator>
                    </AbsoluteDim>
                </Dim>
                <Dim type="TopEdge" ><ImageDim imageset="OgreTrayImages" image="TextBoxT" dimension="Height" /></Dim>
                <Dim type="Width" ><ImageDim imageset="OgreTrayImages" image="Handle" dimension="Width" /></Dim>
                <Dim type="BottomEdge" >
                    <UnifiedDim scale="1" type="BottomEdge">
                        <DimOperator op="Subtract">
                            <ImageDim imageset="OgreTrayImages" image="TextBoxB" dimension="Height" />
                        </DimOperator>
                    </UnifiedDim>
                </Dim>
            </Area>
            <HorzAlignment type="RightAligned" />
            <Property name="NonClient" value="True" />
        </Child>
        <StateImagery name="Enabled" />
        <StateImagery name="Disabled" />
        <StateImagery name="EnabledFrame">
            <Layer><Section look="OgreTray/StaticShared" section="frame" /></Layer>
        </StateImagery>
        <StateImagery name="DisabledFrame">
            <Layer><Section look="OgreTray/StaticShared" section="frame" /></Layer>
        </StateImagery>
        <StateImagery name="WithFrameEnabledBackground">
            <Layer><Section look="OgreTray/StaticShared" section="with_frame_background" /></Layer>
        </StateImagery>
        <StateImagery name="WithFrameDisabledBackground">
            <Layer><Section look="OgreTray/StaticShared" section="with_frame_background" /></Layer>
        </StateImagery>
        <StateImagery name="NoFrameEnabledBackground">
            <Layer><Section look="OgreTray/StaticShared" section="no_frame_background" /></Layer>
        </StateImagery>
        <StateImagery name="NoFrameDisabledBackground">
            <Layer><Section look="OgreTray/StaticShared" section="no_frame_background" /></Layer>
        </StateImagery>
    </WidgetLook>


How can I remove the button image that is behind the Static Text?

Thanks

Re: Menu fixed

Posted: Mon Nov 01, 2010 14:27
by Kulik
via FrameEnabled property, set it to false on your instances of it.

EDIT: I guess this could be the default setting for 0.8 for StaticText as most people seem to always disable the frame.

Re: Menu fixed

Posted: Mon Nov 01, 2010 15:15
by VitaliBR
Thanks Kulik :)

And how to fix the framewindow nobody move around or change its size?

Re: Menu fixed

Posted: Mon Nov 01, 2010 15:16
by Kulik
setSizingEnabled and setDragMovingEnabled... But unless you really need something from FrameWindow, I would just use DefaultWindow... You will also have to disable rollup, etc..

Re: Menu fixed

Posted: Mon Nov 01, 2010 18:10
by VitaliBR
To execute an action on the button I'm doing this:

Code: Select all

   CEGUI::PushButton* bt_exit = static_cast<CEGUI::PushButton*>(CEGUI::WindowManager::getSingletonPtr()->getWindow("MainWindow/exit"));
   bt_exit->subscribeEvent(CEGUI::PushButton::EventClicked, CEGUI::Event::Subscriber(&CEGUI_PushButton_Exit));



And function CEGUI_PushButton_Exit:

Code: Select all

bool CEGUI_PushButton_Exit(const CEGUI::EventArgs &e)
{
   PostQuitMessage(0); //Quit the Game :(
   return true;
}


I tried to execute the action PostQuitMessage(0) directly in CEGUI::Event::Subscriber but I could not, no way?

Re: Menu fixed

Posted: Mon Nov 01, 2010 19:56
by Jamarr
VitaliBR wrote:but I could not


This statement is useless without details. You need to explicitly state what you have already tried; eg did you verify that CEGUI_PushButton_Exit was called? I can only assume that you are not injecting any input. I have to assume this, because you did not state one way or another. Have you read the tutorials, specifically Injecting Inputs? Also, I would suggested reading this article before seeking help. It will help you help us to help you ;)

Re: Menu fixed

Posted: Mon Nov 01, 2010 20:44
by VitaliBR
Sorry!


I tried only putting the function PostQuitMessage(0) in CEGUI::Event::Subscriber this way:

Code: Select all

bt_exit->subscribeEvent(CEGUI::PushButton::EventClicked, CEGUI::Event::Subscriber(PostQuitMessage(0)));



I read the article Injecting Inputs, but not found something that did not need to create a function to perform

I know it's wrong, i read the doxygen:
http://cegui.org.uk/api_reference/class ... cec3103b2e
But I can not find an alternative :(

Re: Menu fixed

Posted: Mon Nov 01, 2010 21:10
by Jamarr
VitaliBR wrote:I tried only putting the function PostQuitMessage(0) in CEGUI::Event::Subscriber this way:

Code: Select all

bt_exit->subscribeEvent(CEGUI::PushButton::EventClicked, CEGUI::Event::Subscriber(PostQuitMessage(0)));


This will not work because the signature of PostQuitMessage does not match the signature required by CEGUI::Event::Subscriber. In otherwords, the subscribing function must match this signature: bool function(const CEGUI::EventArgs& args).

You should be fine using the snippet you posted above, eg:

VitalBR wrote:

Code: Select all

bool CEGUI_PushButton_Exit(const CEGUI::EventArgs &e)
{
   PostQuitMessage(0); //Quit the Game :(
   return true;
}



However, for this function to be called CEGUI has to know that the user has clicked on the appropriate button. The only way for CEGUi to determine if this button has been pressed, is if you call injectMousePosition / injectMouseButtonDown whenever you detect mouse input.

Re: Menu fixed

Posted: Tue Nov 02, 2010 00:14
by VitaliBR
That was my doubt, and was answered
Jamarr wrote:This will not work because the signature of PostQuitMessage does not match the signature required by CEGUI::Event::Subscriber. In otherwords, the subscribing function must match this signature: bool function(const CEGUI::EventArgs& args).


As for the code that I showed, it works and the button is performing the action perfectly. My question was whether I need to create a function

Thanks :)