Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using vsx how do you create a sub menu with commands?

I have created the following vsct file xml.

<?xml version="1.0" encoding="utf-8"?>
<CommandTable xmlns="http://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <Extern href="stdidcmd.h"/>
    <Extern href="vsshlids.h"/>
    <Extern href="msobtnid.h"/>
    <Commands package="guidMyVSXCommandsPkg">
        <Menus>
            <Menu guid="guidMyVSXCommandsCmdSet" id="TopLevelMenu" priority="0x100" type="Menu">
                <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_PROJNODE"/>
                <Strings>
                    <MenuText>Work???</MenuText>
                    <ButtonText>FigureMain</ButtonText>
                    <CommandName>TryMainMenu</CommandName>
                </Strings>
            </Menu>
        </Menus>
        <Groups>
            <Group guid="guidMyVSXCommandsCmdSet" id="TopLevelMenuGroup" priority="0x0600">
                <Parent guid="guidMyVSXCommandsCmdSet" id="TopLevelMenu"/>
            </Group>
        </Groups>
        <Buttons>
            <Button guid="guidMyVSXCommandsCmdSet" id="cmdidMyCommand" priority="0x0100" type="Button">
                <Parent guid="guidMyVSXCommandsCmdSet" id="TopLevelMenuGroup" />
                <Icon guid="guidImages" id="bmpPic1" />
                <Strings>
                    <CommandName>cmdidMyCommand</CommandName>
                    <ButtonText>DO SOMETHING REAL COOL!!!!!!!!</ButtonText>
                </Strings>
            </Button>
        </Buttons>
        <Bitmaps>
            <Bitmap guid="guidImages" href="Resources\Images_32bit.bmp" usedList="bmpPic1, bmpPic2, bmpPicSearch, bmpPicX, bmpPicArrows"/>
        </Bitmaps>
    </Commands>
    <Symbols>
        <!-- This is the package guid. -->
        <GuidSymbol name="guidMyVSXCommandsPkg" value="{70e6574c-ebed-4856-b78b-0927966cc800}" />

        <!-- This is the guid used to group the menu commands together -->
        <GuidSymbol name="guidMyVSXCommandsCmdSet" value="{301c910a-65eb-42c4-bf0f-bc5aaac737f1}">
            <IDSymbol name="TopLevelMenu" value="0x0100" />
            <IDSymbol name="TopLevelMenuGroup" value="0x0200" />
            <IDSymbol name="cmdidMyCommand" value="0x0300" />
        </GuidSymbol>
        <GuidSymbol name="guidImages" value="{1997bf57-349c-434a-ad64-32a3a65e35f3}" >
            <IDSymbol name="bmpPic1" value="1" />
            <IDSymbol name="bmpPic2" value="2" />
            <IDSymbol name="bmpPicSearch" value="3" />
            <IDSymbol name="bmpPicX" value="4" />
            <IDSymbol name="bmpPicArrows" value="5" />
        </GuidSymbol>
    </Symbols>

</CommandTable>

What the end result is I want to see when I the context menu to have an option of

Work??? --> DO SOMETHING REAL COOL!!!!!!!!

like image 268
David Basarab Avatar asked Apr 15 '10 03:04

David Basarab


1 Answers

Your Menu should have its parent set to a group instead of the top-level context menu. For example, try changing this line:

<Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_PROJNODE"/>

to this line:

<Parent guid="guidSHLMainMenu" id="IDG_VS_CTXT_PROJECT_START"/>

You should now see "TryMainMenu" show up next to "Debug" on the project node's context menu. If you want your menu to exist in its own group on the top level context menu, you should define a new group with parent IDM_VS_CTXT_PROJNODE and set your menu's parent to that.

Alternatively, you can discover what the other existing groups are (besides IDG_VS_CTXT_PROJECT_START) by looking at SharedCmdPlace.vsct and finding Group elements with the following parent:

<Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_PROJNODE"/>
like image 114
Aaron Marten Avatar answered Nov 15 '22 11:11

Aaron Marten