1 Reply Latest reply on Oct 5, 2014 10:00 AM by Uriel Avron

    C# API Addin Creating Menu

    Uriel Avron

      Hi Everyone,

       

      It might seem a little "noobish" but the SW C# template baffles me.

      I am using SW2013 and creating the Add-In using Visual Studio Express 2010.

      There are four applications I need to run from my Add-In.

      When I create a new project, I get a beautiful menu right by the File submenu that shows all four applications - correct.

      On the other hand, on the Toolbar created I get the following:

      • I get two Icons of the first two menu Items I have
      • I also get a menu named exactly the same as the "Tooltip" of the Toolbar that includes all the menu Items.

      What I want is to reach a situation whereI have the following:

      • I want the menu items on the main menu Right by the "File" submenu
      • I want all the menu Items on the toolbar as Icons
      • I DON"T want the drop down menu on the toolbar with the menu items.

      I have deleted everything I could, played around with the HasToolbar and HasMenu Boolean methods, I couldn't achieve my goal.

      Are there any "Magic Numbers" in the commands that create these objects that I am not aware of?

       

      This is the skeleton of the program that I have:

       

      ========================================

      #region UI Methods

       

      public void AddCommandMgr ()

       

       

       

       

       

      {

       

       

       

      ICommandGroup cmdGroup;

       

      if (iBmp == null)

       

      iBmp = new BitmapHandler ();

       

      Assembly thisAssembly;

       

      int cmdIndex0, cmdIndex1,cmdIndex2,cmdIndex3;

       

      string Title = "MyApps", ToolTip = "My Applications";

       

       

       

      int [] docTypes = new int []

       

       

       

       

       

       

       

      {

       

       

       

       

      (int)swDocumentTypes_e.swDocNONE,

       

      (int)swDocumentTypes_e.swDocASSEMBLY,

       

      (int)swDocumentTypes_e.swDocPART,

       

      (int)swDocumentTypes_e.swDocDRAWING

       

       

       

       

       

       

      };

       

       

       

       

       

       

       

       

      thisAssembly = System.Reflection.Assembly.GetAssembly ( this.GetType () );

       

       

       

       

       

       

        

       

       

       

       

       

      // int cmdGroupErr = 0;

       

      bool ignorePrevious = false;

       

      object registryIDs;

       

      //get the ID information stored in the registry

       

      bool getDataResult = iCmdMgr.GetGroupDataFromRegistry ( mainCmdGroupID, out registryIDs );

       

      int [] knownIDs = new int [4] { mainItemID1, mainItemID2, mainItemID3, mainItemID4 };

       

      if (getDataResult)

       

       

       

       

       

       

      {

       

       

       

       

       

      if (!CompareIDs ( (int [])registryIDs, knownIDs )) //if the IDs don't match, reset the commandGroup

       

       

       

       

       

       

      {

       

       

       

       

       

      ignorePrevious = true;

       

       

       

       

       

       

      }

       

       

       

      }

       

       

       

       

       

      cmdGroup = iCmdMgr.CreateCommandGroup ( mainCmdGroupID, Title, ToolTip, "", 0);

       

      cmdGroup.LargeIconList = iBmp.CreateFileFromResourceBitmap ( "scApps.ToolbarLarge.bmp", thisAssembly );

       

      cmdGroup.SmallIconList = iBmp.CreateFileFromResourceBitmap ( "scApps.ToolbarSmall.bmp", thisAssembly );

       

      cmdGroup.LargeMainIcon = iBmp.CreateFileFromResourceBitmap ( "scApps.MainIconLarge.bmp", thisAssembly );

       

      cmdGroup.SmallMainIcon = iBmp.CreateFileFromResourceBitmap ( "scApps.MainIconSmall.bmp", thisAssembly );

       

      // int menuToolbarOption = (int)(swCommandItemType_e.swMenuItem | swCommandItemType_e.swToolbarItem);

       

      cmdIndex0 = cmdGroup.AddCommandItem ( "CUObject",0, "Create a New oBject or update an existing one", "CUObject", 0, "callNuPart", "", mainItemID1 );

       

      cmdIndex1 = cmdGroup.AddCommandItem ( "ShadowFiles", -1, "Create Neutral Files", "ShadowFiles", 0, "shadowFiles", "", mainItemID2 );

       

      cmdIndex2 = cmdGroup.AddCommandItem ( "AddParams", -1, "Add Parameters with Default Values to Object", "AddParams", 0, "addParams", "", mainItemID3 );

       

      cmdIndex3 = cmdGroup.AddCommandItem ( "ModelInfo", -1, "Information about current Object", "ModelInfo", 0, "modelInfo", "", mainItemID4 );

       

      cmdGroup.HasToolbar = true; //If set to false, the apps are without the Icons and there is a blanked out group named "Form New Subassembly"

       

      cmdGroup.HasMenu = true; //If set to false, the applications won't show up in the main menu, together with File, Edit etc.

       

       

       

       

       

       

      cmdGroup.Activate ();

       

        • Re: C# API Addin Creating Menu
          Uriel Avron

          Well, I gave up a little too early...

          After mocking around in the C# Template, I found that the following command was the reason for the unwanted menu:

          =================

           

          cmdIDs [2] = cmdGroup.ToolbarId;

          TextType [2] = (int)swCommandTabButtonTextDisplay_e.swCommandTabButton_TextHorizontal | (int)swCommandTabButtonFlyoutStyle_e.swCommandTabButton_ActionFlyout;

          ====================

          After replacing the line :

          cmdIDs[2]=cmdGroup.ToolbarID;

          With:

          cmdIDs [2] = cmdGroup.get_CommandID ( cmdIndex2);

           

          The problem disappeared and FINALLY I got the menuitems in the main menu and only the applications without the submenu on the Toolbar.

           

          Thank you all who have visited the question

           

           

          1 person found this helpful