Exemple #1
0
        internal override ButtonData GetButtonData()
        {
            SplitButtonData splitButtonData =
                new SplitButtonData(_name,
                                    _text);

            if (_largeImage != null)
            {
                splitButtonData.LargeImage = _largeImage;
            }

            if (_smallImage != null)
            {
                splitButtonData.Image = _smallImage;
            }
            if (_toolTipsImage != null)
            {
                splitButtonData.ToolTipImage = _toolTipsImage;
            }
            if (!string.IsNullOrWhiteSpace(_toolTips))
            {
                splitButtonData.ToolTip = _toolTips;
            }
            if (!string.IsNullOrWhiteSpace(_description))
            {
                splitButtonData.LongDescription = _description;
            }
            if (_contextualHelp != null)
            {
                splitButtonData.SetContextualHelp(_contextualHelp);
            }
            return(splitButtonData);
        }
        public Result OnStartup(UIControlledApplication application)
        {
            RibbonPanel rp = application.CreateRibbonPanel("HOK Mass Tools");
            string      currentAssembly = System.Reflection.Assembly.GetAssembly(this.GetType()).Location;

            #region Create a SplitButton for user to create Mass or Transfer Data
            SplitButtonData splitButtonData = new SplitButtonData("MassTool", "3D Mass");
            SplitButton     splitButton     = rp.AddItem(splitButtonData) as SplitButton;

            PushButton pushButton = splitButton.AddPushButton(new PushButtonData("CreateMass", "Create Mass", currentAssembly, "HOK.RoomsToMass.Command"));
            pushButton.LargeImage = LoadBitmapImage("cube.png");

            pushButton.ToolTip      = "Creates 3D Mass from rooms, areas and floors.";
            pushButton.ToolTipImage = LoadBitmapImage("tooltip.png");

            PushButton pushButton2 = splitButton.AddPushButton(new PushButtonData("UpdateData", "Update Data", currentAssembly, "HOK.RoomsToMass.DataCommand"));
            pushButton2.LargeImage = LoadBitmapImage("refresh.png");
            pushButton2.ToolTip    = "This will transfer parameters values between source objects and created masses.";

            PushButton pushButton3 = splitButton.AddPushButton(new PushButtonData("MassCommands", "Mass Commands", currentAssembly, "HOK.RoomsToMass.AssignerCommand"));
            pushButton3.LargeImage = LoadBitmapImage("shape.png");
            pushButton3.ToolTip    = "This will assign worksets or other parameters values in elements depending on what mass objects surrounding the elements.";
            #endregion

            return(Result.Succeeded);
        }
        public Result OnStartup(UIControlledApplication application)
        {
            string currentAssembly  = System.Reflection.Assembly.GetAssembly(this.GetType()).Location;
            string currentDirectory = Path.GetDirectoryName(currentAssembly);

            try { application.CreateRibbonTab(tabName); }
            catch { }

            AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);

            RibbonPanel     rp = application.CreateRibbonPanel(tabName, "Model Manager");
            SplitButtonData splitButtonData = new SplitButtonData("ModelManager", "Model Manager");
            SplitButton     splitButton     = rp.AddItem(splitButtonData) as SplitButton;

            PushButton projectButton = splitButton.AddPushButton(new PushButtonData("ProjectReplication", "Project Replication", currentAssembly, "HOK.ModelManager.ProjectCommand"));

            projectButton.LargeImage = LoadBitmapImage("project.png");;
            projectButton.ToolTip    = "Transfer data from opened models to the active Revit model.";

            if (ModelBuilderActivated())
            {
                PushButton modelButton = splitButton.AddPushButton(new PushButtonData("ModelBuilder", "Model Builder", currentAssembly, "HOK.ModelManager.ModelCommand"));
                modelButton.LargeImage = LoadBitmapImage("model.png");;
                modelButton.ToolTip    = "Specify resource locations and transfer the data into the active Revit model.";
            }

            return(Result.Succeeded);
        }
        private void CreateRibbonSamplePanel(UIControlledApplication application)
        {
            //RibbonPanel显示一个大按钮,图标为第一个按钮的图标
            string      firstPanelName    = "Ribbon 实例";//面板底部文字提示
            RibbonPanel ribbonSamplePanel = application.CreateRibbonPanel(firstPanelName);

            #region 创建墙和结构墙

            //RibbonPanel(面板)->SplitButton(按钮组)->PushButton(按钮)
            SplitButtonData splitButtonData = new SplitButtonData("NewWallSplit", "创建墙");                //按钮数据,按钮组显示的文字为第一个按钮的文字
            SplitButton     splitButton     = ribbonSamplePanel.AddItem(splitButtonData) as SplitButton; //添加到面板

            //PushButton pushButton = splitButton.AddPushButton(new PushButtonData("WallPush", "普通墙", AddInPath, "Revit.SDK.Samples.Ribbon.CS.CreateWall"));
            //最后一个参数是执行按钮事件的响应类名
            PushButtonData pushButtonDataWall = new PushButtonData("WallPush", "普通墙", AddInPath, "HY.CreateWall");
            PushButton     pushButton         = splitButton.AddPushButton(pushButtonDataWall);
            //大图标,小图标
            pushButton.LargeImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "CreateWall.png"), UriKind.Absolute));
            pushButton.Image      = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "CreateWall-S.png"), UriKind.Absolute));
            //提示文字,提示图片
            pushButton.ToolTip      = "Creates a partition wall in the building model.";
            pushButton.ToolTipImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "CreateWallTooltip.bmp"), UriKind.Absolute));

            //按钮组里第二个按钮
            pushButton            = splitButton.AddPushButton(new PushButtonData("StrWallPush", "结构墙", AddInPath, "HY.CreateStructureWall"));
            pushButton.LargeImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "StrcturalWall.png"), UriKind.Absolute));
            pushButton.Image      = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "StrcturalWall-S.png"), UriKind.Absolute));

            #endregion

            ribbonSamplePanel.AddSeparator();
        }
        private void AddSplitButton(RibbonPanel panel)
        {
            string assembly = @"D:\Sample\HelloWorld\bin\Debug\Hello.dll";

            PushButtonData bOne = new PushButtonData("ButtonNameA", "Option One",
                                                     assembly, "Hello.HelloOne");

            bOne.LargeImage =
                new System.Windows.Media.Imaging.BitmapImage(new Uri(@"D:\Sample\HelloWorld\bin\Debug\One.bmp"));

            PushButtonData bTwo = new PushButtonData("ButtonNameB", "Option Two",
                                                     assembly, "Hello.HelloTwo");

            bTwo.LargeImage =
                new System.Windows.Media.Imaging.BitmapImage(new Uri(@"D:\Sample\HelloWorld\bin\Debug\Two.bmp"));

            PushButtonData bThree = new PushButtonData("ButtonNameC", "Option Three",
                                                       assembly, "Hello.HelloThree");

            bThree.LargeImage =
                new System.Windows.Media.Imaging.BitmapImage(new Uri(@"D:\Sample\HelloWorld\bin\Debug\Three.bmp"));

            SplitButtonData sb1 = new SplitButtonData("splitButton1", "Split");
            SplitButton     sb  = panel.AddItem(sb1) as SplitButton;

            sb.AddPushButton(bOne);
            sb.AddPushButton(bTwo);
            sb.AddPushButton(bThree);
        }
        /// <summary>
        /// Split button for "Command Data", "DB Element" and "Element Filtering"
        /// </summary>
        public void AddSplitButton(RibbonPanel panel)
        {
            // Create three push buttons for split button drop down

            // #1
            PushButtonData pushButtonData1 = new PushButtonData("SplitCommandData", "Command Data", _introLabPath, _introLabName + ".CommandData");

            pushButtonData1.LargeImage = NewBitmapImage("ImgHelloWorld.png");

            // #2
            PushButtonData pushButtonData2 = new PushButtonData("SplitDbElement", "DB Element", _introLabPath, _introLabName + ".DBElement");

            pushButtonData2.LargeImage = NewBitmapImage("ImgHelloWorld.png");

            // #3
            PushButtonData pushButtonData3 = new PushButtonData("SplitElementFiltering", "ElementFiltering", _introLabPath, _introLabName + ".ElementFiltering");

            pushButtonData3.LargeImage = NewBitmapImage("ImgHelloWorld.png");

            // Make a split button now
            SplitButtonData splitBtnData = new SplitButtonData("SplitButton", "Split Button");
            SplitButton     splitBtn     = panel.AddItem(splitBtnData) as SplitButton;

            splitBtn.AddPushButton(pushButtonData1);
            splitBtn.AddPushButton(pushButtonData2);
            splitBtn.AddPushButton(pushButtonData3);
        }
Exemple #7
0
        public static void CreateIcons(RibbonPanel bim42Panel)
        {
            //Retrive dll path
            string DllPath = Assembly.GetExecutingAssembly().Location;

            ContextualHelp helpFile = CreateContextualHelp("BIM42Help");

            //Add RoomsFinishes Button
            string         ButtonText       = Tools.LangResMan.GetString("roomFinishes_button_name", Tools.Cult);
            PushButtonData FinishButtonData = new PushButtonData("RoomsFiButton", ButtonText, DllPath, "RoomFinishes.RoomsFinishes.RoomsFinishes");

            FinishButtonData.ToolTip    = Tools.LangResMan.GetString("roomFinishes_toolTip", Tools.Cult);
            FinishButtonData.LargeImage = RetriveImage("RoomFinishes.Resources.RoomFinishLarge.png");
            FinishButtonData.Image      = RetriveImage("RoomFinishes.Resources.RoomFinishSmall.png");
            FinishButtonData.SetContextualHelp(helpFile);
            //bim42Panel.AddItem(FinishButtonData);

            //Add FloorFinishes Button
            string         floorButtonText = Tools.LangResMan.GetString("floorFinishes_ribbon_panel_name", Tools.Cult);
            PushButtonData floorButtonData = new PushButtonData("FloorFiButton", floorButtonText, DllPath, "RoomFinishes.RoomsFinishes.FloorFinishes");

            floorButtonData.ToolTip    = Tools.LangResMan.GetString("floorFinishes_toolTip", Tools.Cult);
            floorButtonData.LargeImage = RetriveImage("RoomFinishes.Resources.FloorFinishesLarge.png");
            floorButtonData.Image      = RetriveImage("RoomFinishes.Resources.FloorFinishesSmall.png");
            floorButtonData.SetContextualHelp(helpFile);

            //Group RoomsFinishes button
            SplitButtonData sbRoomData = new SplitButtonData("splitButton2", "BIM 42");
            SplitButton     sbRoom     = bim42Panel.AddItem(sbRoomData) as SplitButton;

            sbRoom.AddPushButton(FinishButtonData);
            sbRoom.AddPushButton(floorButtonData);
        }
Exemple #8
0
        public Result OnStartup(UIControlledApplication a)
        {
            ParentSupportMethods myParentSupportMethods = new ParentSupportMethods();

            myParentSupportMethods.myTA = this;

            string stringCommand01Button = "Set Development Path Root";

            Properties.Settings.Default.AssemblyNeedLoading = true;
            Properties.Settings.Default.Save();

            String exeConfigPath = Path.GetDirectoryName(path) + "\\" + dllName + ".dll";

            a.CreateRibbonTab(TabName);
            RibbonPanelCurrent = a.CreateRibbonPanel(TabName, PanelName);

            PushButtonData myPushButtonData01 = new PushButtonData(stringCommand01Button, stringCommand01Button, exeConfigPath, dllName + ".InvokeSetDevelopmentPath");

            ComboBoxData cbData = new ComboBoxData("DeveloperSwitch")
            {
                ToolTip = "Select an Option", LongDescription = "Select a number or letter"
            };
            ComboBox ComboBox01 = RibbonPanelCurrent.AddStackedItems(cbData, myPushButtonData01)[0] as ComboBox;

            string stringProductVersion = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\\Pedersen Read Limited\\cSharpPlaypen joshnewzealand").GetValue("ProductVersion").ToString();

            //Bug fix here by Max Sun (01/05/19)

            ComboBox01.AddItem(new ComboBoxMemberData("Release", "Release: " + stringProductVersion));
            ComboBox01.AddItem(new ComboBoxMemberData("Development", "C# Developer Mode"));
            ComboBox01.CurrentChanged += new EventHandler <Autodesk.Revit.UI.Events.ComboBoxCurrentChangedEventArgs>(SwitchBetweenDeveloperAndRelease);

            //RibbonPanelCurrent.AddItem(myParentSupportMethods.myPushButton_01(Button_01, path));
            RibbonPanelCurrent.AddItem(myParentSupportMethods.Button01_Start("Button01_Start", Button01_Start, path));
            RibbonPanelCurrent.AddItem(myParentSupportMethods.Button02_DrawWallTypes("Button02_DrawWallTypes", Button02_DrawWallTypes, path));
            RibbonPanelCurrent.AddItem(myParentSupportMethods.Button03_SetDefault("Button03_SetDefault", Button03_SetDefault, path));
            RibbonPanelCurrent.AddItem(myParentSupportMethods.Button04_ManualOverrideColor("Button04_ManualOverrideColor", Button04_ManualOverrideColor, path));
            RibbonPanelCurrent.AddItem(myParentSupportMethods.Button07_ExtensibleStorage("Button07_ExtensibleStorage", Button07_ExtensibleStorage, path));

            PushButtonData myPushButtonData_OneClickBackup   = myParentSupportMethods.Button15_SingleClickFamilyBackup("Button15_SingleClickFamilyBackup", Button15_SingleClickFamilyBackup, path);
            PushButtonData myPushButtonData_OpenBackupFolder = new PushButtonData("Button15_OpenBackupFolder", "Open Backup Folder", exeConfigPath, dllName + ".InvokeOpenBackupFolder");

            SplitButtonData sb1 = new SplitButtonData("OneClickBackupSystem", "One Click Backup System");
            SplitButton     sb  = RibbonPanelCurrent.AddItem(sb1) as SplitButton;

            sb.AddPushButton(myPushButtonData_OneClickBackup);
            sb.AddPushButton(myPushButtonData_OpenBackupFolder);
            sb.IsSynchronizedWithCurrentItem = false;



            RibbonPanelCurrent.AddItem(myParentSupportMethods.Button1617_AddEditParameters("Button1617_AddEditParameters", Button1617_AddEditParameters, path));
            RibbonPanelCurrent.AddItem(myParentSupportMethods.Button1819_UnderstandingTransforms("Button1819_UnderstandingTransforms", Button1819_UnderstandingTransforms, path));
            RibbonPanelCurrent.AddItem(myParentSupportMethods.Button02_Uninstall("Button_02_Uninstall", Button_02_Uninstall, path));

            //PRLChecklistsPanel2.Visible = false;
            //RibbonPanel PRLChecklistsPanel2 = a.CreateRibbonPanel(TabName, PanelTransferring);
            //myParentSupportMethods.PlaceButtonOnModifyRibbon();
            return(Result.Succeeded);
        }
Exemple #9
0
        private void CreateMasterRibbon(UIControlledApplication uiApp, string tabName)
        {
            RibbonPanel panel = uiApp.CreateRibbonPanel(tabName, "BIM-мастер");


            SplitButtonData    sbdAddParams   = new SplitButtonData("FamilyParametersSplitButton", "Добавить параметры");
            PushButtonData     pbdClearGuids  = CreateButtonData("ClearUnusedGUIDs", "CommandClear");
            PushButtonData     pbdFixSlowFile = CreateButtonData("FixSlowFile", "Command");
            IList <RibbonItem> stacked1       = panel.AddStackedItems(sbdAddParams, pbdClearGuids, pbdFixSlowFile);

            SplitButton splitFamParam = stacked1[0] as SplitButton;

            splitFamParam.AddPushButton(CreateButtonData("ClearUnusedGUIDs", "CommandAddParameters"));
            splitFamParam.AddPushButton(CreateButtonData("ClearUnusedGUIDs", "CommandAddParamsByAnalog"));



            SplitButtonData    sbdParametrization = new SplitButtonData("ModelParametrizationSplitButton", "Параметризация");
            PushButtonData     pbdWorksets        = CreateButtonData("RevitWorksets", "Command");
            PushButtonData     pbdFamiliesLibrary = CreateButtonData("TestDockable3", "CommandShowDockableWindow");
            IList <RibbonItem> stacked2           = panel.AddStackedItems(sbdParametrization, pbdWorksets, pbdFamiliesLibrary);

            SplitButton splitParametrization = stacked2[0] as SplitButton;

            splitParametrization.AddPushButton(CreateButtonData("ParameterWriter", "Command"));
            splitParametrization.AddPushButton(CreateButtonData("RebarBDS", "Command"));
            splitParametrization.AddPushButton(CreateButtonData("WriteParametersFormElemsToParts", "CommandWriteParam"));
            splitParametrization.AddPushButton(CreateButtonData("RevitPlatesWeight", "Command"));
            splitParametrization.AddPushButton(CreateButtonData("IngradParametrisation", "Cmd"));
        }
Exemple #10
0
        /// <summary>
        /// 创建一个按钮
        /// </summary>
        /// <param name="plugin"></param>
        /// <param name="panel"></param>
        private static void CreateButton(IFangCommand plugin, RibbonPanel panel)
        {
            if (plugin.SplitName != null && plugin.SplitName != "")
            {
                SplitButton splitbt = FindSplitByName(panel, plugin.SplitName);
                if (splitbt != null)
                {
                    PushButtonData data = new PushButtonData(plugin.AlaisName, plugin.AlaisName, plugin.GetType().Assembly.Location, plugin.ModelName);
                    PushButton     ps   = splitbt.AddPushButton(data);
                    ps.LargeImage = plugin.ImageURI;
                    ps.Image      = plugin.ImageURI;

                    ps.SetShortCut(plugin.ShortCutKey);
                }
                else
                {
                    SplitButtonData splidata = new SplitButtonData(plugin.SplitName, plugin.SplitName);
                    SplitButton     ps       = panel.AddItem(splidata) as SplitButton;
                    ps.LargeImage = plugin.ImageURI;
                    ps.Image      = plugin.ImageURI;
                    ps.SetShortCut(plugin.ShortCutKey);
                    ps.IsSynchronizedWithCurrentItem = false;
                    //ps.ItemText = plugin.SplitName;
                }
            }
            else
            {
            }
        }
Exemple #11
0
        public Result OnStartup(UIControlledApplication app)
        {
            // (Konrad) Initiate Nlog logger.
            NLogUtils.CreateConfiguration();
            _logger = LogManager.GetCurrentClassLogger();

            // (Konrad) Setup Document events.
            app.ControlledApplication.DocumentOpened  += OnDocumentOpened;
            app.ControlledApplication.DocumentCreated += OnDocumentCreated;
            app.ControlledApplication.DocumentSaving  += OnDocumentSaving;
            app.ControlledApplication.DocumentSynchronizingWithCentral += OnDocumentSynchronizingWithCentral;
            app.ControlledApplication.DocumentSynchronizedWithCentral  += OnDocumentSynchronizedWithCentral;
            app.ControlledApplication.FailuresProcessing += FailureProcessor.CheckFailure;
            app.ViewActivated += OnViewActivated;

            app.CreateRibbonTab("Honeybee");
            var panel = app.CreateRibbonPanel("Honeybee", "Honeybee");

            SettingsCommand.CreateButton(panel);
            var hbButton    = CreateHbModelCommand.CreateButton();
            var dfButton    = CreateDfModelCommand.CreateButton();
            var splitButton = new SplitButtonData("CreateModelCommand", "Split");
            var sb          = (SplitButton)panel.AddItem(splitButton);

            sb.AddPushButton(hbButton);
            sb.AddPushButton(dfButton);

            CreateModelHandler = new CreateModelRequestHandler();
            CreateModelEvent   = ExternalEvent.Create(CreateModelHandler);

            // (Konrad) Register an updater that will watch annotations for changes.
            AnnotationUpdater = new AnnotationUpdater(app.ActiveAddInId);

            return(Result.Succeeded);
        }
Exemple #12
0
        }         // end OnShutdown

        private bool AddSplitPushButtons(RibbonPanel rPanel)
        {
            ContextualHelp help = new ContextualHelp(ContextualHelpType.Url, AppStrings.R_CyberStudioDupSheetsAddr);

            try
            {
                // make push button 1
                PushButtonData pbData1 = MakePushButton(
                    rPanel, LocalResMgr.ButtonName,
                    AppStrings.R_ButtonNameTop + nl + AppStrings.R_ButtonNameBott,
                    AppStrings.R_ButtonImage16,
                    AppStrings.R_ButtonImage32,
                    Assembly.GetExecutingAssembly().Location,
                    LocalResMgr.Command, AppStrings.R_CommandDescription);

                if (pbData1 == null)
                {
                    return(false);
                }

                pbData1.SetContextualHelp(help);

                PushButtonData pbData2 = MakePushButton(
                    rPanel, LocalResMgr.ButtonName_1Click,
                    AppStrings.R_ButtonNameTopOneClick + nl + AppStrings.R_ButtonNameBottOneClick,
                    AppStrings.R_ButtonImageOneClick16,
                    AppStrings.R_ButtonImageOneClick32,
                    Assembly.GetExecutingAssembly().Location,
                    LocalResMgr.Command_1Click, AppStrings.R_CommandDescriptionOneClick);

                if (pbData2 == null)
                {
                    return(false);
                }

                SplitButtonData sbd = new SplitButtonData("splitButton", "DupSheets");
                SplitButton     sb  = rPanel.AddItem(sbd) as SplitButton;

                pbData2.SetContextualHelp(help);


                sb.SetContextualHelp(help);

                sb.AddPushButton(pbData1);
                sb.AddPushButton(pbData2);
            }
            catch
            {
                return(false);
            }

            return(true);
        }
        public Result OnStartup(UIControlledApplication application)
        {
            string text = "Hot Gear";

            try
            {
                application.CreateRibbonTab(text);
            }
            catch
            {
            }
            RibbonPanel     val            = application.CreateRibbonPanel(text, "Element Merger");
            ContextualHelp  contextualHelp = new ContextualHelp(2, "https://hotgearproject.gitbooks.io/hotgear-project/content/element_merger.html");
            SplitButtonData val2           = new SplitButtonData("HotGear", "HotGear");
            SplitButton     val3           = val.AddItem(val2) as SplitButton;
            PushButton      val4           = val3.AddPushButton(new PushButtonData("JoinAll", "Join All", HotGearPackage.AddInPath, "JoinAll"));

            val4.set_ToolTip("Join All Selected Category in Project.");
            val4.set_LargeImage(HotGearPackage.RetriveImage("HotGearAllInOne.Resources.JoinAll.png"));
            val4.set_Image(HotGearPackage.RetriveImage("HotGearAllInOne.Resources.JoinAll_s.png"));
            val4.SetContextualHelp(contextualHelp);
            val4 = val3.AddPushButton(new PushButtonData("JoinPush", "Join Selection", HotGearPackage.AddInPath, "JoinElement"));
            val4.set_ToolTip("Join Revit Current Selection Element.");
            val4.set_LargeImage(HotGearPackage.RetriveImage("HotGearAllInOne.Resources.Join.png"));
            val4.set_Image(HotGearPackage.RetriveImage("HotGearAllInOne.Resources.Join_s.png"));
            val4.SetContextualHelp(contextualHelp);
            val4 = val3.AddPushButton(new PushButtonData("UnjoinPush", "Unjoin Selection", HotGearPackage.AddInPath, "UnjoinElement"));
            val4.set_ToolTip("Unjoin Revit Current Selection Element.");
            val4.set_LargeImage(HotGearPackage.RetriveImage("HotGearAllInOne.Resources.Unjoin.png"));
            val4.set_Image(HotGearPackage.RetriveImage("HotGearAllInOne.Resources.Unjoin_s.png"));
            val4.SetContextualHelp(contextualHelp);
            val4 = val3.AddPushButton(new PushButtonData("SwitchPush", "Switch Join Order", HotGearPackage.AddInPath, "SwitchJoinOrder"));
            val4.set_ToolTip("Switch Join Order of Revit Current Selection Element.");
            val4.set_LargeImage(HotGearPackage.RetriveImage("HotGearAllInOne.Resources.Switch.png"));
            val4.set_Image(HotGearPackage.RetriveImage("HotGearAllInOne.Resources.Switch_s.png"));
            val4.SetContextualHelp(contextualHelp);
            val4 = val3.AddPushButton(new PushButtonData("CutPush", "Cut Selection", HotGearPackage.AddInPath, "CutElement"));
            val4.set_ToolTip("Cut Revit Current Selection Element.");
            val4.set_LargeImage(HotGearPackage.RetriveImage("HotGearAllInOne.Resources.Cut.png"));
            val4.set_Image(HotGearPackage.RetriveImage("HotGearAllInOne.Resources.Cut_s.png"));
            val4.SetContextualHelp(contextualHelp);
            val4 = val3.AddPushButton(new PushButtonData("UnCutPush", "UnCut Selection", HotGearPackage.AddInPath, "UnCutElement"));
            val4.set_ToolTip("UnCut Revit Current Selection Element.");
            val4.set_LargeImage(HotGearPackage.RetriveImage("HotGearAllInOne.Resources.UnCut.png"));
            val4.set_Image(HotGearPackage.RetriveImage("HotGearAllInOne.Resources.UnCut_s.png"));
            val4.SetContextualHelp(contextualHelp);
            val4 = val3.AddPushButton(new PushButtonData("About", "About", HotGearPackage.AddInPath, "About"));
            val4.set_ToolTip("About HotGear Project");
            val4.set_LargeImage(HotGearPackage.RetriveImage("HotGearAllInOne.Resources.gear32.png"));
            val4.set_Image(HotGearPackage.RetriveImage("HotGearAllInOne.Resources.gear16.png"));
            val4.SetContextualHelp(contextualHelp);
            return(0);
        }
Exemple #14
0
        public Result OnStartup(UIControlledApplication application)
        {
            assembly = Assembly.GetExecutingAssembly().Location;
            RibbonPanel     ribbonPanel      = application.CreateRibbonPanel("Crowd Simulation");
            string          thisAssemblyPath = Assembly.GetExecutingAssembly().Location;
            SplitButtonData pbd = new SplitButtonData("evacData", "Add Evacuation Data");
            SplitButton     sb  = ribbonPanel.AddItem(pbd) as SplitButton;

            addArrowButton(sb);
            addCrowdButton(sb);
            addStartButton(sb);
            return(Result.Succeeded);
        }
Exemple #15
0
        private void AddPulldownButton(RibbonPanel ribbon, string executableLocation, ButtonInfo button)
        {
            string dllLocation = Path.Combine(executableLocation, button.Dll ?? AppLayout.DefaultDll);

            var pulldownButtons = button.PulldownList.Select(b => GetButtonData(dllLocation, b));

            var sbData = new SplitButtonData(button.Name, button.Text ?? "pulldown");
            var sb     = ribbon.AddItem(sbData) as PulldownButton;

            foreach (var b in pulldownButtons)
            {
                sb.AddPushButton(b);
            }
        }
Exemple #16
0
        //进行各种按钮的属性设置
        public void AddButtonIteam(ref RibbonPanel ribbon, string buttonType, string tabName, string buttonText, string assemblyName, string className, string largeImageuri, string toolTip, string longDescription)
        {
            switch (buttonType)
            {
            case "PushButton":
                PushButtonData pbd = new PushButtonData(tabName, buttonText, assemblyName, className);    //tabName可用可不用?
                SetPushButtonAttribute(ref ribbon, pbd, largeImageuri, toolTip, longDescription);
                break;

            case "PulldownButton":
                PulldownButtonData pdbd = new PulldownButtonData("柱", "柱");
                SetPulldownButtonAttribute(ref ribbon, assemblyName, className, pdbd, largeImageuri, toolTip, longDescription);

                break;

            case "SplitButton":
                SplitButtonData sbd = new SplitButtonData("板", "板");
                //SetButtonAttribute(pbd, largeImageuri, toolTip, longDescription);

                break;

            case "ComboBox":
                ComboBoxData cbd = new ComboBoxData("");
                //SetButtonAttribute(pbd, largeImageuri, toolTip, longDescription);

                break;

            case "RadioButtonGroup":
                RadioButtonGroupData rbgd = new RadioButtonGroupData("");
                //SetButtonAttribute(pbd, largeImageuri, toolTip, longDescription);

                break;

            case "ToggleButton":
                ToggleButtonData tbd = new ToggleButtonData("", "");
                //SetButtonAttribute(pbd, largeImageuri, toolTip, longDescription);

                break;

            case "TextBox":
                TextBoxData textbd = new TextBoxData("");
                //SetButtonAttribute(pbd, largeImageuri, toolTip, longDescription);

                break;

            default:
                break;
            }
        }
Exemple #17
0
        public SplitButton Create()
        {
            var splitButton = panel.RvtPanel.GetItems()
                              .OfType <SplitButton>()
                              .FirstOrDefault(x => x.Name == name);

            if (splitButton != null)
            {
                return(splitButton);
            }

            var splitButtonData = new SplitButtonData(name, text);

            return(panel.RvtPanel.AddItem(splitButtonData) as SplitButton);
        }
Exemple #18
0
 private static void AddGroupedCommands(string dllfullpath, RibbonPanel ribbonPanel, IEnumerable <IGrouping <string, Command> > groupedCommands)
 {
     foreach (var group in groupedCommands)
     {
         SplitButtonData splitButtonData = new SplitButtonData(group.Key, group.Key);
         var             splitButton     = ribbonPanel.AddItem(splitButtonData) as SplitButton;
         foreach (var command in group)
         {
             var pbd = new PushButtonData(command.Name, command.Name, dllfullpath, "Command" + command.Index);
             pbd.Image      = command.SmallImage;
             pbd.LargeImage = command.LargeImage;
             splitButton.AddPushButton(pbd);
         }
     }
 }
Exemple #19
0
        private bool AddStackedPullDownhButtons(RibbonPanel rp)
        {
            SplitButton sb0;
            SplitButton sb1;


            SplitButtonData sbData0 = new SplitButtonData("pullDownButton0", "function select");

            sbData0.Image = RibbonUtil.GetBitmapImage(SMALLICON);

            SplitButtonData sbData1 = new SplitButtonData("pullDownButton1", "auto activate");

            sbData1.Image = RibbonUtil.GetBitmapImage(SMALLICON);

            PushButtonData pbData0 = createButton("pushButton0", "Auto Update: On - Turn Off", "ToggAutoActivate",
                                                  "Revit Windows Settings", SMALLICON, LARGEICON);

            PushButtonData pbData1 = createButton("pushButton1", "Settings", "SettingsFormShow",
                                                  "Revit Windows Settings", SMALLICON, LARGEICON);

            IList <RibbonItem> ris = rp.AddStackedItems(sbData0, pbData0, pbData1);

            sb0 = ris[0] as SplitButton;
//			sb1 = ris[1] as SplitButton;
            pb01 = ris[1] as PushButton;

            PushButtonData pbd;

            // pull down button 0
            pbd = createButton("button00", "Side Views Larger ", "IncreaseSideViewSize",
                               "Make the Active View Larger", SMALLICON, LARGEICON);
            sb0.AddPushButton(pbd);

            pbd = createButton("button01", "Side Views Smaller", "DecreaseSideViewSize",
                               "Make the Active View Smaller", SMALLICON, LARGEICON);
            sb0.AddPushButton(pbd);

//			// pull down button 1
//			pbd = createButton("button10", "Activate Auto On", "AutoActivateOn",
//				"Turn on AutoActivate", SMALLICON, LARGEICON);
//			sb1.AddPushButton(pbd);
//
//			pbd = createButton("button11", "Activate Auto Off", "AutoActivateOff",
//				"Turn off AutoActivate", SMALLICON, LARGEICON);
//			sb1.AddPushButton(pbd);
//
            return(true);
        }
Exemple #20
0
        public Result OnStartup(UIControlledApplication application)
        {
            string text = "Hot Gear";

            try
            {
                application.CreateRibbonTab(text);
            }
            catch
            {
            }
            RibbonPanel     val            = application.CreateRibbonPanel(text, "Wall Join Controller");
            ContextualHelp  contextualHelp = new ContextualHelp(2, "https://hotgearproject.gitbooks.io/hotgear-project/content/");
            SplitButtonData val2           = new SplitButtonData("HotGear", "HotGear");
            SplitButton     val3           = val.AddItem(val2) as SplitButton;
            PushButton      val4           = val3.AddPushButton(new PushButtonData("SquareOff", "Join SquareOff", HotGearPackage.AddInPath, "WallJoin_SquareOff"));

            val4.set_ToolTip("Wall Join Type : SquareOff");
            val4.set_LargeImage(HotGearPackage.RetriveImage("HotGearAllInOne.Resources.Square_off.png"));
            val4.set_Image(HotGearPackage.RetriveImage("HotGearAllInOne.Resources.Square_off_s.png"));
            val4.SetContextualHelp(contextualHelp);
            val4 = val3.AddPushButton(new PushButtonData("Butt", "Join Butt", HotGearPackage.AddInPath, "WallJoin_Butt"));
            val4.set_ToolTip("Wall Join Type : Butt");
            val4.set_LargeImage(HotGearPackage.RetriveImage("HotGearAllInOne.Resources.Butt.png"));
            val4.set_Image(HotGearPackage.RetriveImage("HotGearAllInOne.Resources.Butt_s.png"));
            val4.SetContextualHelp(contextualHelp);
            val4 = val3.AddPushButton(new PushButtonData("Miter", "Join Miter", HotGearPackage.AddInPath, "WallJoin_Miter"));
            val4.set_ToolTip("Wall Join Type : Miter");
            val4.set_LargeImage(HotGearPackage.RetriveImage("HotGearAllInOne.Resources.Miter.png"));
            val4.set_Image(HotGearPackage.RetriveImage("HotGearAllInOne.Resources.Miter_s.png"));
            val4.SetContextualHelp(contextualHelp);
            val4 = val3.AddPushButton(new PushButtonData("AllowJoin", "Join Allow", HotGearPackage.AddInPath, "WallJoin_Allow"));
            val4.set_ToolTip("Wall Join : Allow");
            val4.set_LargeImage(HotGearPackage.RetriveImage("HotGearAllInOne.Resources.Allow.png"));
            val4.set_Image(HotGearPackage.RetriveImage("HotGearAllInOne.Resources.Allow_s.png"));
            val4.SetContextualHelp(contextualHelp);
            val4 = val3.AddPushButton(new PushButtonData("DisallowJoin", "Join DisAllow", HotGearPackage.AddInPath, "WallJoin_Disallow"));
            val4.set_ToolTip("Wall Join : Disallow");
            val4.set_LargeImage(HotGearPackage.RetriveImage("HotGearAllInOne.Resources.DisAllow.png"));
            val4.set_Image(HotGearPackage.RetriveImage("HotGearAllInOne.Resources.DisAllow_s.png"));
            val4.SetContextualHelp(contextualHelp);
            val4 = val3.AddPushButton(new PushButtonData("About", "About", HotGearPackage.AddInPath, "About"));
            val4.set_ToolTip("About HotGear Project");
            val4.set_LargeImage(HotGearPackage.RetriveImage("HotGearAllInOne.Resources.gear32.png"));
            val4.set_Image(HotGearPackage.RetriveImage("HotGearAllInOne.Resources.gear16.png"));
            val4.SetContextualHelp(contextualHelp);
            return(0);
        }
Exemple #21
0
        private void AddSplitButton(Autodesk.Revit.UI.RibbonPanel panel, string m_masterSchedulePath, string m_ExcelImportPath)
        {
            PushButtonData buttonOne = new PushButtonData("ButtonOne", "Image Based Import", m_masterSchedulePath, "ManageMasterSchedule.Command");

            buttonOne.LargeImage = LoadPngImgSource("KirkseyAppsRibbon.Icons.MasterScheduleUpdateImage32.png");

            PushButtonData buttonTwo = new PushButtonData("ButtonTwon", "Text/Schedule Based Import", m_ExcelImportPath, "ExcelImport.Command");

            buttonTwo.LargeImage = LoadPngImgSource("KirkseyAppsRibbon.Icons.MasterScheduleUpdateText32.png");

            SplitButtonData sb1 = new SplitButtonData("splitButton1", "Split");
            SplitButton     sb  = panel.AddItem(sb1) as SplitButton;

            sb.AddPushButton(buttonOne);
            sb.AddPushButton(buttonTwo);
        }
Exemple #22
0
        private bool AddSplitButton(RibbonPanel rp)
        {
            try
            {
                SplitButtonData sbData = new SplitButtonData("splitButton01", "function select");
                sbData.Image      = RibbonUtil.GetBitmapImage(LARGEICON);
                sbData.LargeImage = RibbonUtil.GetBitmapImage(LARGEICON);

                SplitButton sb = rp.AddItem(sbData) as SplitButton;

                PushButtonData pbd;

                pbd = createButton("SplitBtn01", "Proper\nCascade", "OrganizeProperCascade",
                                   "Organize Revit Windows by Proper Cascade", SMALLICON, LARGEICON);
                sb.AddPushButton(pbd);

                pbd = createButton("SplitBtn02", "Window's\nCascade", "OrganizeWindowsCascade",
                                   "Organize Revit Windows by Windows Cascade", SMALLICON, LARGEICON);
                sb.AddPushButton(pbd);

                pbd = createButton("SplitBtn03", "Active on\nLeft Tiled", "OrganizeLeft",
                                   "Place the Active Window on the Left", SMALLICON, LARGEICON);
                sb.AddPushButton(pbd);

                pbd = createButton("SplitBtn04", "Active on\nTop Tiled", "OrganizeTop",
                                   "Place the Active Window on the Top", SMALLICON, LARGEICON);
                sb.AddPushButton(pbd);

                pbd = createButton("SplitBtn05", "Active on\nRight Tiled", "OrganizeRight",
                                   "Place the Active Window on the Right", SMALLICON, LARGEICON);
                sb.AddPushButton(pbd);

                pbd = createButton("SplitBtn06", "Active on\nBottom Tiled", "OrganizeBottom",
                                   "Place the Active Window on the Bottom", SMALLICON, LARGEICON);
                sb.AddPushButton(pbd);

                pbd = createButton("SplitBtn07", "Active to\nLeft Stacked", "OrganizeLeftOverlapped",
                                   "Place the Active Window on the Left\nand Stack Remaining Windows", SMALLICON, LARGEICON);
                sb.AddPushButton(pbd);
            }
            catch
            {
                return(false);
            }

            return(true);
        }
Exemple #23
0
        /// <summary>
        ///     Creates a split button.
        /// </summary>
        /// <param name="pnl"></param>
        /// <param name="pbd"></param>
        /// <param name="pbds"></param>
        /// <returns></returns>
        public static SplitButton AddPushButton(this RibbonPanel pnl, SplitButtonData pbd, IEnumerable <PushButtonData> pbds)
        {
            if (pnl is null)
            {
                throw new ArgumentNullException(nameof(pnl));
            }

            if (pbd is null)
            {
                throw new ArgumentNullException(nameof(pbd));
            }

            if (pbds is null)
            {
                throw new ArgumentNullException(nameof(pbds));
            }

            if (!pbds.Any())
            {
                throw new TargetParameterCountException(nameof(pbds));
            }

            if (!(pnl.AddItem(pbd) is SplitButton result))
            {
                throw new InvalidCastException();
            }

            result.ToolTip         = pbd.ToolTip;
            result.LongDescription = pbd.LongDescription;
            result.LargeImage      = pbd.LargeImage;

            foreach (var pbdl in pbds)
            {
                var btn = result.AddPushButton(pbdl);

                if (btn is null)
                {
                    continue;
                }

                btn.ToolTip         = pbdl.ToolTip;
                btn.LongDescription = pbdl.LongDescription;
                btn.LargeImage      = pbdl.LargeImage;
            }

            return(result);
        }
Exemple #24
0
        public Result OnStartup(UIControlledApplication application)
        {
            application.CreateRibbonTab("UCD场地工具");
            RibbonPanel panel1 = application.CreateRibbonPanel("UCD场地工具", "欢迎页");

            PushButtonData pbd = new PushButtonData("UCD场地工具", "欢迎使用", @"D:\Studay\CSharp\Work\Revit\HelloRevit\bin\Debug\HelloRevit.dll", "HelloRevit.Class1");
            PushButton     pb  = panel1.AddItem(pbd) as PushButton;

            RibbonPanel     panel2    = application.CreateRibbonPanel("UCD场地工具", "工具");
            SplitButtonData splitData = new SplitButtonData("我的集合", "创建工具");
            SplitButton     sb        = panel2.AddItem(splitData) as SplitButton;

            PushButtonData spd = new PushButtonData("UCD场地工具", "创建", @"D:\Studay\CSharp\Work\Revit\Create2\bin\Debug\Create2.dll", "Create2.CreateBox")
            {
                LargeImage = new BitmapImage(new Uri(@"D:\Studay\CSharp\Work\Revit\Ribbon1\img\sign_road.png"))
            };

            sb.AddPushButton(spd);
            panel2.AddSeparator();

            PulldownButtonData pdbd    = new PulldownButtonData("UCD场地工具", "检查");
            PushButtonData     pushbtn = new PushButtonData("UCD场地工具", "碰撞检查", @"D:\Studay\CSharp\Work\Revit\Collision\bin\Debug\Collision.dll", "Collision.Class1");
            PulldownButton     btn     = panel2.AddItem(pushbtn) as PulldownButton;

            btn.LongDescription = "检查当前物体是否碰撞";
            btn.AddPushButton(pushbtn);

            RibbonPanel  panel3 = application.CreateRibbonPanel("UCD场地工具", "文件");
            ComboBoxData cbd    = new ComboBoxData("选项");
            ComboBox     cBox   = panel3.AddItem(cbd) as ComboBox;

            if (cBox != null)
            {
                cBox.ItemText        = "选择操作";
                cBox.ToolTip         = "请选择想要进行的操作";
                cBox.LongDescription = "选择一直接关闭,选择二关闭并修改";
                ComboBoxMemberData cbmd  = new ComboBoxMemberData("A", "关闭");
                ComboBoxMemberData cbmd2 = new ComboBoxMemberData("B", "关闭并修改");
                cbmd.GroupName = "编辑操作";
                cBox.AddItem(cbmd);
                cBox.AddItem(cbmd2);
            }

            cBox.CurrentChanged += Change;
            cBox.CurrentChanged += Closed;
            return(Result.Succeeded);
        }
Exemple #25
0
        public static void CreateIcons(RibbonPanel panel)
        {
            //Retrive dll path
            var dllPath = Assembly.GetExecutingAssembly().Location;

            //Add RoomsFinishes Button
            var finishButtonData = new PushButtonData("Button", "Перекрасить смежные", dllPath, "RoomFinishes.Plugin")
            {
                ToolTip    = "Перекрасить смежные",
                LargeImage = RetriveImage("RoomFinishes.Resources.RoomFinishLarge.png"),
                Image      = RetriveImage("RoomFinishes.Resources.RoomFinishSmall.png")
            };
            var sbRoomData = new SplitButtonData("Button2", "Перекрасить смежные");
            var sbRoom     = panel.AddItem(sbRoomData) as SplitButton;

            sbRoom?.AddPushButton(finishButtonData);
        }
Exemple #26
0
        /// <summary>
        /// Add min 2 or max 3 buttons to a stacked button.
        /// </summary>
        private bool AddSplitButton(RibbonPanel panel, IList <PushButtonData> splitButtonsGroup, string splitButtonName, string splitButtonText)
        {
            try
            {
                SplitButtonData sb1 = new SplitButtonData(splitButtonName, splitButtonText);
                SplitButton     sb  = panel.AddItem(sb1) as SplitButton;

                foreach (PushButtonData item in splitButtonsGroup)
                {
                    sb.AddPushButton(item);
                }

                return(true);
            }
            catch
            {
                return(false);
            }
        }
Exemple #27
0
        public static RibbonPanel CreateLoggedPanel(RibbonPanel bimsyncPanel)
        {
            //Retrive dll path
            string DllPath = Assembly.GetExecutingAssembly().Location;

            //Create contextual help
            string         helpPath = Path.Combine(Path.GetDirectoryName(DllPath), "bimsyncHelp.html");
            ContextualHelp help     = new ContextualHelp(ContextualHelpType.ChmFile, helpPath);

            //Add Logged Buttons
            PushButtonData profileButton = new PushButtonData("profileButton", "Profile", DllPath, "bimsync.Commands.Profile");

            profileButton.ToolTip    = "Open your bimsync account";
            profileButton.LargeImage = RetriveImage("bimsync.Resources.user_large.png");
            profileButton.Image      = RetriveImage("bimsync.Resources.user_small.png");
            profileButton.SetContextualHelp(help);

            PushButtonData logoutButton = new PushButtonData("logoutButton", "Logout", DllPath, "bimsync.Commands.Logout");

            logoutButton.ToolTip    = "Logout";
            logoutButton.LargeImage = RetriveImage("bimsync.Resources.power-off_large.png");
            logoutButton.Image      = RetriveImage("bimsync.Resources.power-off_small.png");
            logoutButton.SetContextualHelp(help);

            SplitButtonData accountButton = new SplitButtonData("AccountButton", "Account");

            _accountButton = bimsyncPanel.AddItem(accountButton) as SplitButton;
            _accountButton.AddPushButton(profileButton);
            _accountButton.AddPushButton(logoutButton);

            //Add upload to bimsync Button
            PushButtonData uploadButton = new PushButtonData("uploadButton", "Upload", DllPath, "bimsync.Commands.Upload");

            uploadButton.ToolTip    = "Upload your model to bimsync";
            uploadButton.LargeImage = RetriveImage("bimsync.Resources.cloud-upload_large.png");
            uploadButton.Image      = RetriveImage("bimsync.Resources.cloud-upload_small.png");
            uploadButton.SetContextualHelp(help);

            _uploadButton = bimsyncPanel.AddItem(uploadButton);

            return(bimsyncPanel);
        }
Exemple #28
0
        //private void CreateDataPushButtons()
        //{
        //    try
        //    {
        //        if (!File.Exists(currentDirectory + "/HOK.RevitDBManager.dll")) return;

        //        var dataPanel = m_app.CreateRibbonPanel(tabName, "Revit Data");

        //        var pb11 = (PushButton)dataPanel.AddItem(new PushButtonData("Data Sync", "Data Sync", currentDirectory + "/HOK.RevitDBManager.dll", "RevitDBManager.Command"));
        //        pb11.LargeImage = LoadBitmapImage(assembly, "sync.ico");
        //        pb11.ToolTip = "Data Sync";
        //        AddToolTips(pb11);

        //var pb12 = (PushButton)dataPanel.AddItem(new PushButtonData("Setup", "  Setup  ", currentDirectory + "/HOK.RevitDBManager.dll", "RevitDBManager.EditorCommand"));
        //pb12.LargeImage = LoadBitmapImage(assembly, "editor.ico");
        //pb12.ToolTip = "Setup";
        //AddToolTips(pb12);

        //        var pb13 = (PushButton)dataPanel.AddItem(new PushButtonData("Data Editor", "Data Editor", currentDirectory + "/HOK.RevitDBManager.dll", "RevitDBManager.ViewerCommand"));
        //        pb13.LargeImage = LoadBitmapImage(assembly, "view.ico");
        //        pb13.ToolTip = "Data Editor";
        //        AddToolTips(pb13);
        //    }
        //    catch (Exception ex)
        //    {
        //        Log.AppendLog(LogMessageType.EXCEPTION, ex.Message);
        //    }
        //}

        /// <summary>
        /// Creates all Analysis related buttons.
        /// </summary>
        private void CreateAvfPushButtons()
        {
            try
            {
                if (!File.Exists(currentDirectory + "/HOK.LPDCalculator.dll") &&
                    !File.Exists(currentDirectory + "/HOK.ViewAnalysis.dll"))
                {
                    return;
                }
                var avfPanel = m_app.CreateRibbonPanel(tabName, "Analysis");

                var splitButtonData = new SplitButtonData("HOKAnalysis", "HOK Analysis");
                var splitButton     = (SplitButton)avfPanel.AddItem(splitButtonData);
                splitButton.IsSynchronizedWithCurrentItem = true;

                if (File.Exists(currentDirectory + "/HOK.LPDCalculator.dll"))
                {
                    var assemblyPath = currentDirectory + "/HOK.LPDCalculator.dll";
                    var ass          = Assembly.LoadFrom(assemblyPath);
                    var pb15         = splitButton.AddPushButton(new PushButtonData("LPD Analysis", "LPD Analysis", currentDirectory + "/HOK.LPDCalculator.dll", "HOK.LPDCalculator.Command"));
                    pb15.LargeImage = ButtonUtil.LoadBitmapImage(ass, "HOK.LPDCalculator", "lpdCalculator_32.png");
                    pb15.ToolTip    = "Calculating Lighting Power Density";
                    AddToolTips(pb15);
                }

                if (!File.Exists(currentDirectory + "/HOK.ViewAnalysis.dll"))
                {
                    return;
                }

                var pb24 = splitButton.AddPushButton(new PushButtonData("LEED View Analysis", "LEED View Analysis", currentDirectory + "/HOK.ViewAnalysis.dll", "HOK.ViewAnalysis.Command"));
                pb24.LargeImage = LoadBitmapImage(assembly, "eq.ico");
                pb24.ToolTip    = "Calculating Area with Views for LEED IEQc 8.2";
                AddToolTips(pb24);
            }
            catch (Exception ex)
            {
                Log.AppendLog(LogMessageType.EXCEPTION, ex.Message);
            }
        }
        private SplitButton AddSplitButtonGroup(RibbonPanel panel)
        {
            var versionData = new SplitButtonData("versions", Resources.DynamoVersions);
            var button      = panel.AddItem(versionData) as SplitButton;

            Bitmap dynamoIcon = Resources.dynamo_32x32;

            BitmapSource bitmapSource =
                Imaging.CreateBitmapSourceFromHBitmap(
                    dynamoIcon.GetHbitmap(),
                    IntPtr.Zero,
                    Int32Rect.Empty,
                    BitmapSizeOptions.FromEmptyOptions());

            PushButton item = null;
            int        i    = 0;

            foreach (var p in Products)
            {
                var name        = p.VersionString;
                var versionInfo = p.VersionInfo;
                var text        = string.Format("{0}.{1}.{2}", versionInfo.Item1, versionInfo.Item2, versionInfo.Item3);

                var itemData = new PushButtonData(
                    name,
                    String.Format(Resources.DynamoVersionText, text),
                    Assembly.GetExecutingAssembly().Location,
                    String.Format("Dynamo.Applications.Command{0}", i++));

                itemData.Image      = bitmapSource;
                itemData.LargeImage = bitmapSource;
                itemData.ToolTip    = string.Format(Resources.DynamoVersionTooltip, text);
                item = button.AddPushButton(itemData);
            }

            button.IsSynchronizedWithCurrentItem = true;
            button.CurrentButton = item;
            return(button);
        }
        //private const string VERSION = "Version R2018 - Build 2018-04-06";

        public Result OnStartup(UIControlledApplication application)
        {
            string startPath = Assembly.GetExecutingAssembly().Location.Substring(0, Assembly.GetExecutingAssembly().Location.LastIndexOf("\\") + 1);

            RibbonPanel ribbonPanel = application.CreateRibbonPanel("HBird");

            PushButtonData pushButtonDataModelBuilder = new PushButtonData("pushButtonModelBuilder", "Model\nBuilder", startPath + "RevitModelBuilder.dll", "RevitModelBuilder.Command");

            pushButtonDataModelBuilder.ToolTip    = "Revit ModelBuilder tool for use with Hummingbird.";
            pushButtonDataModelBuilder.Image      = new BitmapImage(new Uri(startPath + "Hummingbird16.png", UriKind.Absolute));
            pushButtonDataModelBuilder.LargeImage = new BitmapImage(new Uri(startPath + "Hummingbird32.png", UriKind.Absolute));
            PushButtonData pushButtonDataDocumentation = new PushButtonData("pushButtonDocumentation", "Documentation", startPath + "RevitDocumentation.dll", "RevitDocumentation.Command");

            pushButtonDataDocumentation.ToolTip = "Documentation for Hummingbird.";
            SplitButtonData splitButtonData = new SplitButtonData("splitButton", "Split");   // Neither value is visible
            SplitButton     splitButton     = ribbonPanel.AddItem(splitButtonData) as SplitButton;

            splitButton.AddPushButton(pushButtonDataModelBuilder);
            splitButton.AddPushButton(pushButtonDataDocumentation);
            splitButton.IsSynchronizedWithCurrentItem = false;

            return(Result.Succeeded);
        }
    /// <summary>
    /// Split button for "Command Data", "DB Element" and "Element Filtering" 
    /// </summary>
    public void AddSplitButton(RibbonPanel panel)
    {
      // Create three push buttons for split button drop down 

      // #1 
      PushButtonData pushButtonData1 = new PushButtonData("SplitCommandData", "Command Data", _introLabPath, _introLabName + ".CommandData");
      pushButtonData1.LargeImage = NewBitmapImage("ImgHelloWorld.png");

      // #2 
      PushButtonData pushButtonData2 = new PushButtonData("SplitDbElement", "DB Element", _introLabPath, _introLabName + ".DBElement");
      pushButtonData2.LargeImage = NewBitmapImage("ImgHelloWorld.png");

      // #3 
      PushButtonData pushButtonData3 = new PushButtonData("SplitElementFiltering", "ElementFiltering", _introLabPath, _introLabName + ".ElementFiltering");
      pushButtonData3.LargeImage = NewBitmapImage("ImgHelloWorld.png");

      // Make a split button now 
      SplitButtonData splitBtnData = new SplitButtonData("SplitButton", "Split Button");
      SplitButton splitBtn = panel.AddItem(splitBtnData) as SplitButton;
      splitBtn.AddPushButton(pushButtonData1);
      splitBtn.AddPushButton(pushButtonData2);
      splitBtn.AddPushButton(pushButtonData3);
    }
Exemple #32
0
        /// <summary>
        /// This method is used to create RibbonSample panel, and add wall related command buttons to it:
        /// 1. contains a SplitButton for user to create Non-Structural or Structural Wall;
        /// 2. contains a StackedBotton which is consisted with one PushButton and two Comboboxes, 
        /// PushButon is used to reset all the RibbonItem, Comboboxes are use to select Level and WallShape
        /// 3. contains a RadioButtonGroup for user to select WallType.
        /// 4. Adds a Slide-Out Panel to existing panel with following functionalities:
        /// 5. a text box is added to set mark for new wall, mark is a instance parameter for wall, 
        /// Eg: if user set text as "wall", then Mark for each new wall will be "wall1", "wall2", "wall3"....
        /// 6. a StackedButton which consisted of a PushButton (delete all the walls) and a PulldownButton (move all the walls in X or Y direction)
        /// </summary>
        /// <param name="application">An object that is passed to the external application 
        /// which contains the controlled application.</param>
        private void CreateRibbonSamplePanel(UIControlledApplication application)
        {
            // create a Ribbon panel which contains three stackable buttons and one single push button.
            string firstPanelName = "Ribbon Sample";
            RibbonPanel ribbonSamplePanel = application.CreateRibbonPanel(firstPanelName);

            #region Create a SplitButton for user to create Non-Structural or Structural Wall
            SplitButtonData splitButtonData = new SplitButtonData("NewWallSplit", "Create Wall");
            SplitButton splitButton = ribbonSamplePanel.AddItem(splitButtonData) as SplitButton;
            PushButton pushButton = splitButton.AddPushButton(new PushButtonData("WallPush", "Wall", AddInPath, "Revit.SDK.Samples.Ribbon.CS.CreateWall"));
            pushButton.LargeImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "CreateWall.png"), UriKind.Absolute));
            pushButton.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "CreateWall-S.png"), UriKind.Absolute));
            pushButton.ToolTip = "Creates a partition wall in the building model.";
            pushButton.ToolTipImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "CreateWallTooltip.bmp"), UriKind.Absolute));
            pushButton = splitButton.AddPushButton(new PushButtonData("StrWallPush", "Structure Wall", AddInPath, "Revit.SDK.Samples.Ribbon.CS.CreateStructureWall"));
            pushButton.LargeImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "StrcturalWall.png"), UriKind.Absolute));
            pushButton.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "StrcturalWall-S.png"), UriKind.Absolute));
            #endregion

            ribbonSamplePanel.AddSeparator();

            #region Add a StackedButton which is consisted of one PushButton and two Comboboxes
            PushButtonData pushButtonData = new PushButtonData("Reset", "Reset", AddInPath, "Revit.SDK.Samples.Ribbon.CS.ResetSetting");
            ComboBoxData comboBoxDataLevel = new ComboBoxData("LevelsSelector");
            ComboBoxData comboBoxDataShape = new ComboBoxData("WallShapeComboBox");
            IList<RibbonItem> ribbonItemsStacked = ribbonSamplePanel.AddStackedItems(pushButtonData, comboBoxDataLevel, comboBoxDataShape);
            ((PushButton)(ribbonItemsStacked[0])).Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "Reset.png"), UriKind.Absolute));
            //Add options to WallShapeComboBox
            Autodesk.Revit.UI.ComboBox comboboxWallShape = (Autodesk.Revit.UI.ComboBox)(ribbonItemsStacked[2]);
            ComboBoxMemberData comboBoxMemberData = new ComboBoxMemberData("RectangleWall", "RectangleWall");
            ComboBoxMember comboboxMember = comboboxWallShape.AddItem(comboBoxMemberData);
            comboboxMember.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "RectangleWall.png"), UriKind.Absolute));
            comboBoxMemberData = new ComboBoxMemberData("CircleWall", "CircleWall");
            comboboxMember = comboboxWallShape.AddItem(comboBoxMemberData);
            comboboxMember.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "CircleWall.png"), UriKind.Absolute));
            comboBoxMemberData = new ComboBoxMemberData("TriangleWall", "TriangleWall");
            comboboxMember = comboboxWallShape.AddItem(comboBoxMemberData);
            comboboxMember.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "TriangleWall.png"), UriKind.Absolute));
            comboBoxMemberData = new ComboBoxMemberData("SquareWall", "SquareWall");
            comboboxMember = comboboxWallShape.AddItem(comboBoxMemberData);
            comboboxMember.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "SquareWall.png"), UriKind.Absolute));
            #endregion

            ribbonSamplePanel.AddSeparator();

            #region Add a RadioButtonGroup for user to select WallType
            RadioButtonGroupData radioButtonGroupData = new RadioButtonGroupData("WallTypeSelector");
            RadioButtonGroup radioButtonGroup = (RadioButtonGroup)(ribbonSamplePanel.AddItem(radioButtonGroupData));
            ToggleButton toggleButton = radioButtonGroup.AddItem(new ToggleButtonData("Generic8", "Generic - 8\"", AddInPath, "Revit.SDK.Samples.Ribbon.CS.Dummy"));
            toggleButton.LargeImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "Generic8.png"), UriKind.Absolute));
            toggleButton.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "Generic8-S.png"), UriKind.Absolute));
            toggleButton = radioButtonGroup.AddItem(new ToggleButtonData("ExteriorBrick", "Exterior - Brick", AddInPath, "Revit.SDK.Samples.Ribbon.CS.Dummy"));
            toggleButton.LargeImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "ExteriorBrick.png"), UriKind.Absolute));
            toggleButton.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "ExteriorBrick-S.png"), UriKind.Absolute));
            #endregion

            //slide-out panel:
            ribbonSamplePanel.AddSlideOut();

            #region add a Text box to set the mark for new wall
            TextBoxData testBoxData = new TextBoxData("WallMark");
            Autodesk.Revit.UI.TextBox textBox = (Autodesk.Revit.UI.TextBox)(ribbonSamplePanel.AddItem(testBoxData));
            textBox.Value = "new wall"; //default wall mark
            textBox.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "WallMark.png"), UriKind.Absolute));
            textBox.ToolTip = "Set the mark for new wall";
            textBox.ShowImageAsButton = true;
            textBox.EnterPressed += new EventHandler<Autodesk.Revit.UI.Events.TextBoxEnterPressedEventArgs>(SetTextBoxValue);
            #endregion

            ribbonSamplePanel.AddSeparator();

            #region Create a StackedButton which consisted of a PushButton (delete all the walls) and a PulldownButton (move all the walls in X or Y direction)
            PushButtonData deleteWallsButtonData = new PushButtonData("deleteWalls", "Delete Walls", AddInPath, "Revit.SDK.Samples.Ribbon.CS.DeleteWalls");
            deleteWallsButtonData.ToolTip = "Delete all the walls created by the Create Wall tool.";
            deleteWallsButtonData.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "DeleteWalls.png"), UriKind.Absolute));

            PulldownButtonData moveWallsButtonData = new PulldownButtonData("moveWalls", "Move Walls");
            moveWallsButtonData.ToolTip = "Move all the walls in X or Y direction";
            moveWallsButtonData.Image = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "MoveWalls.png"), UriKind.Absolute));

            // create stackable buttons
            IList<RibbonItem> ribbonItems = ribbonSamplePanel.AddStackedItems(deleteWallsButtonData, moveWallsButtonData);

            // add two push buttons as sub-items of the moveWalls PulldownButton.
            PulldownButton moveWallItem = ribbonItems[1] as PulldownButton;

            PushButton moveX = moveWallItem.AddPushButton(new PushButtonData("XDirection", "X Direction", AddInPath, "Revit.SDK.Samples.Ribbon.CS.XMoveWalls"));
            moveX.ToolTip = "move all walls 10 feet in X direction.";
            moveX.LargeImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "MoveWallsXLarge.png"), UriKind.Absolute));

            PushButton moveY = moveWallItem.AddPushButton(new PushButtonData("YDirection", "Y Direction", AddInPath, "Revit.SDK.Samples.Ribbon.CS.YMoveWalls"));
            moveY.ToolTip = "move all walls 10 feet in Y direction.";
            moveY.LargeImage = new BitmapImage(new Uri(Path.Combine(ButtonIconsFolder, "MoveWallsYLarge.png"), UriKind.Absolute));
            #endregion

            ribbonSamplePanel.AddSeparator();

            application.ControlledApplication.DocumentCreated += new EventHandler<Autodesk.Revit.DB.Events.DocumentCreatedEventArgs>(DocumentCreated);
        }
 private static void AddGroupedCommands(string dllfullpath, RibbonPanel ribbonPanel, IEnumerable<IGrouping<string, Command>> groupedCommands)
 {
     foreach (var group in groupedCommands)
     {
         SplitButtonData splitButtonData = new SplitButtonData(group.Key, group.Key);
         var splitButton = ribbonPanel.AddItem(splitButtonData) as SplitButton;
         foreach (var command in group)
         {
             var pbd = new PushButtonData(command.Name, command.Name, dllfullpath, "Command" + command.Index);
             pbd.Image = command.SmallImage;
             pbd.LargeImage = command.LargeImage;
             splitButton.AddPushButton(pbd);
         }
     }
 }
Exemple #34
0
        /// <summary>
        /// Create a custom ribbon panel and populate
        /// it with our commands, saving the resulting
        /// ribbon items for later access.
        /// </summary>
        static void AddRibbonPanel(
            UIControlledApplication a)
        {
            string[] tooltip = new string[] {
            "Upload selected sheets and categories to cloud.",
            "Upload selected rooms to cloud.",
            "Upload all rooms to cloud.",
            "Update furniture from the last cloud edit.",
            "Subscribe to or unsubscribe from updates.",
            "About " + Caption + ": ..."
              };

              string[] text = new string[] {
            "Upload Sheets",
            "Upload Rooms",
            "Upload All Rooms",
            "Update Furniture",
            "Subscribe",
            "About..."
              };

              string[] classNameStem = new string[] {
            "UploadSheets",
            "UploadRooms",
            "UploadAllRooms",
            "Update",
            "Subscribe",
            "About"
              };

              string[] iconName = new string[] {
            "2Up",
            "1Up",
            "2Up",
            "1Down",
            "ZigZagRed",
            "Question"
              };

              int n = classNameStem.Length;

              Debug.Assert( text.Length == n,
            "expected equal number of text and class name entries" );

              _buttons = new RibbonItem[n];

              RibbonPanel panel
            = a.CreateRibbonPanel( Caption );

              SplitButtonData splitBtnData
            = new SplitButtonData( Caption, Caption );

              SplitButton splitBtn = panel.AddItem(
            splitBtnData ) as SplitButton;

              Assembly asm = typeof( App ).Assembly;

              for( int i = 0; i < n; ++i )
              {
            PushButtonData d = new PushButtonData(
              classNameStem[i], text[i], _path,
              _namespace + "." + _cmd_prefix
              + classNameStem[i] );

            d.ToolTip = tooltip[i];

            d.Image = GetBitmapImage( asm,
              IconResourcePath( iconName[i], "16" ) );

            d.LargeImage = GetBitmapImage( asm,
              IconResourcePath( iconName[i], "32" ) );

            d.ToolTipImage = GetBitmapImage( asm,
              IconResourcePath( iconName[i], "" ) );

            _buttons[i] = splitBtn.AddPushButton( d );
              }
        }
Exemple #35
0
        public Result OnStartup(UIControlledApplication application)
        {
            address = new Uri(addr + application.ControlledApplication.VersionNumber);
            uicApp = application;


            _app = this;
            serverActive = Properties.Settings.Default.defaultServerOn;
            // Create the button
            try
            {
                BitmapSource bms;
                PushButtonData lyrebirdButton;
                //StartServer();
                if (disableButton)
                {
                    bms = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(Properties.Resources.Lyrebird_On.GetHbitmap(), IntPtr.Zero, System.Windows.Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
                    lyrebirdButton = new PushButtonData("Lyrebird Server", "Lyrebird Server\nDisabled", typeof(RevitServerApp).Assembly.Location, "LMNA.Lyrebird.ServerToggle")
                    {
                        LargeImage = bms,
                        ToolTip = "The Lyrebird Server is currently disabled in this session of Revit.  This is most likely because you have more than one session of Revit and the server can only run in one.",
                    };
                    Properties.Settings.Default.enableServer = false;
                    Properties.Settings.Default.Save();
                }
                else
                {
                    if (serverActive)
                    {
                        bms = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(Properties.Resources.Lyrebird_On.GetHbitmap(), IntPtr.Zero, System.Windows.Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
                        lyrebirdButton = new PushButtonData("Lyrebird Server", "Lyrebird\nServer On", typeof(RevitServerApp).Assembly.Location, "LMNA.Lyrebird.ServerToggle")
                        {
                            LargeImage = bms,
                            ToolTip = "The Lyrebird Server currently on and will accept requests for data and can create objects.  Push button to toggle the server off.",
                        };
                        StartServer();
                        //ServiceOn();
                    }
                    else
                    {
                        bms = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(Properties.Resources.Lyrebird_Off.GetHbitmap(), IntPtr.Zero, System.Windows.Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
                        lyrebirdButton = new PushButtonData("Lyrebird Server", "Lyrebird\nServer Off", typeof(RevitServerApp).Assembly.Location, "LMNA.Lyrebird.ServerToggle")
                        {
                            LargeImage = bms,
                            ToolTip = "The Lyrebird Server is currently off and will not accept requests for data or create objects.  Push button to toggle the server on.",
                        };
                    }
                    Properties.Settings.Default.enableServer = true;
                    Properties.Settings.Default.Save();
                }

                // Settings button
                BitmapSource setBMS = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(Properties.Resources.Lyrebird_Settings.GetHbitmap(), IntPtr.Zero, System.Windows.Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
                PushButtonData settingsButtonData = new PushButtonData("Lyrebird Settings", "Lyrebird Settings", typeof(RevitServerApp).Assembly.Location, "LMNA.Lyrebird.SettingsCmd")
                {
                    LargeImage = setBMS,
                    ToolTip = "Lyrebird Server settings.",
                };

                // Selection button
                BitmapSource selBMS = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(Properties.Resources.Lyrebird_Select.GetHbitmap(), IntPtr.Zero, System.Windows.Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
                PushButtonData selectionButtonData = new PushButtonData("Select Run", "Select Run", typeof(RevitServerApp).Assembly.Location, "LMNA.Lyrebird.SelectRunElementsCmd")
                {
                    LargeImage = selBMS,
                    ToolTip = "Select elements created from Lyrebird",
                };

                // Selection button
                BitmapSource delBMS = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(Properties.Resources.Lyrebird_RemoveData.GetHbitmap(), IntPtr.Zero, System.Windows.Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
                PushButtonData removeButtonData = new PushButtonData("Remove Data", "Remove Data", typeof(RevitServerApp).Assembly.Location, "LMNA.Lyrebird.RemoveDataCmd")
                {
                    LargeImage = delBMS,
                    ToolTip = "Remove Lyrebird data from selected elements",
                };

                // Create the tab if necessary
                const string tabName = "LMN";
                Autodesk.Windows.RibbonControl ribbon = Autodesk.Windows.ComponentManager.Ribbon;
                Autodesk.Windows.RibbonTab tab = null;
                foreach (Autodesk.Windows.RibbonTab t in ribbon.Tabs)
                {
                    if (t.Id == tabName)
                    {
                        tab = t;
                    }
                }
                if (tab == null)
                {
                    application.CreateRibbonTab(tabName);
                }

                bool found = false;
                List<RibbonPanel> panels = application.GetRibbonPanels(tabName);
                RibbonPanel panel = null;
                foreach (RibbonPanel rp in panels)
                {
                    if (rp.Name == "Utilities")
                    {
                        panel = rp;
                        found = true;
                    }
                }

                SplitButtonData sbd = new SplitButtonData("Lyrebird", "Lyrebird");

                if (!found)
                {
                    // Create the panel
                    RibbonPanel utilitiesPanel = application.CreateRibbonPanel(tabName, "Utilities");

                    // Split button
                    SplitButton sb = utilitiesPanel.AddItem(sbd) as SplitButton;
                    serverButton = sb.AddPushButton(lyrebirdButton) as PushButton;
                    PushButton settingsButton = sb.AddPushButton(settingsButtonData) as PushButton;
                    PushButton selButton = sb.AddPushButton(selectionButtonData) as PushButton;
                    PushButton removeButton = sb.AddPushButton(removeButtonData) as PushButton;
                    sb.IsSynchronizedWithCurrentItem = false;
                }
                else
                {
                    SplitButton sb = panel.AddItem(sbd) as SplitButton;
                    serverButton = sb.AddPushButton(lyrebirdButton) as PushButton;
                    PushButton settingsButton = sb.AddPushButton(settingsButtonData) as PushButton;
                    PushButton selButton = sb.AddPushButton(selectionButtonData) as PushButton;
                    PushButton removeButton = sb.AddPushButton(removeButtonData) as PushButton;
                    sb.IsSynchronizedWithCurrentItem = false;
                }

                if (disableButton)
                {
                    serverButton.Enabled = false;
                }
            }
            catch (Exception ex)
            {
                TaskDialog.Show("Error", ex.ToString());
            }

            return Result.Succeeded;
        }
Exemple #36
0
        /// <summary>
        /// Create our custom ribbon panel and populate
        /// it with our commands, saving the resulting
        /// ribbon items for later access.
        /// </summary>
        static void AddRibbonPanel(
            UIControlledApplication a)
        {
            string[] tooltip = new string[] {
            "Create and bind shared parameter definition.",
            "Export shared parameter values one by one creating new and updating existing documents.",
            "Export shared parameter values in batch after deleting all existing project documents.",
            "Import shared parameter values.",
            "Subscribe to or unsubscribe from updates.",
            "About " + Caption + ": ..."
              };

              string[] text = new string[] {
            "Bind Shared Parameter",
            "Export one by one",
            "Export batch",
            "Import",
            "Subscribe",
            "About..."
              };

              string[] classNameStem = new string[] {
            "1_CreateAndBindSharedParameter",
            "2a_ExportSharedParameterValues",
            "2b_ExportSharedParameterValuesBatch",
            "3_ImportSharedParameterValues",
            "4_Subscribe",
            "0_About"
              };

              string[] iconName = new string[] {
            "Knot",
            "1Up",
            "2Up",
            "1Down",
            "ZigZagRed",
            "Question"
              };

              int n = classNameStem.Length;

              Debug.Assert( text.Length == n
            && tooltip.Length == n
            && iconName.Length == n,
            "expected equal number of text and class name entries" );

              Debug.Assert(
            text[_subscribeButtonIndex].Equals( _subscribe ),
            "Did you set the correct _subscribeButtonIndex?" );

              _buttons = new RibbonItem[n];

              RibbonPanel panel
            = a.CreateRibbonPanel( Caption );

              SplitButtonData splitBtnData
            = new SplitButtonData( Caption, Caption );

              SplitButton splitBtn = panel.AddItem(
            splitBtnData ) as SplitButton;

              Assembly asm = typeof( App ).Assembly;

              for ( int i = 0; i < n; ++i )
              {
            PushButtonData d = new PushButtonData(
              classNameStem[i], text[i], _path,
              _namespace + "." + _cmd_prefix
              + classNameStem[i] );

            d.ToolTip = tooltip[i];

            d.Image = GetBitmapImage( asm,
              IconResourcePath( iconName[i], "16" ) );

            d.LargeImage = GetBitmapImage( asm,
              IconResourcePath( iconName[i], "32" ) );

            d.ToolTipImage = GetBitmapImage( asm,
              IconResourcePath( iconName[i], "" ) );

            _buttons[i] = splitBtn.AddPushButton( d );
              }
        }