Example #1
0
        /// <summary>
        /// Adds the push button.
        /// </summary>
        /// <param name="pnl"></param>
        /// <param name="pbd"></param>
        /// <param name="pbds"></param>
        /// <returns></returns>
        public static void AddPushButton(this RibbonPanel pnl, PulldownButtonData pbd, List <PushButtonData> pbds)
        {
            if (!(pnl.AddItem(pbd) is PulldownButton pdbtn))
            {
                return;
            }

            pdbtn.ToolTip         = pbd.ToolTip;
            pdbtn.LongDescription = pbd.LongDescription;
            pdbtn.LargeImage      = pbd.LargeImage;

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

                if (btn == null)
                {
                    continue;
                }

                btn.ToolTip         = pbdl.ToolTip;
                btn.LongDescription = pbdl.LongDescription;
                btn.LargeImage      = pbdl.LargeImage;
            }
        }
        public override RibbonItemData GetItemData()
        {
            PulldownButtonData pulldownButtonData =
                new PulldownButtonData(_name,
                                       _text);

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

            if (_smallImage != null)
            {
                pulldownButtonData.Image = _smallImage;
            }
            if (_toolTipsImage != null)
            {
                pulldownButtonData.ToolTipImage = _toolTipsImage;
            }
            if (!string.IsNullOrWhiteSpace(_toolTips))
            {
                pulldownButtonData.ToolTip = _toolTips;
            }
            if (!string.IsNullOrWhiteSpace(_description))
            {
                pulldownButtonData.LongDescription = _description;
            }
            if (_contextualHelp != null)
            {
                pulldownButtonData.SetContextualHelp(_contextualHelp);
            }
            return(pulldownButtonData);
        }
Example #3
0
        public SharedParametersMain(UIControlledApplication uIControlledApplication)
        {
            string thisAssemblyPath = Assembly.GetExecutingAssembly().Location;

            RibbonPanel sharedParametersPanel = RibbonPanelSetting.ribbonPanel(uIControlledApplication, "Shared Parameters");

            PulldownButtonData loadParameterData = new PulldownButtonData("LoadParameters", "Load Parameters");
            RibbonItem         loadParameterItem = sharedParametersPanel.AddItem(loadParameterData);
            PulldownButton     loadOptionButton  = loadParameterItem as PulldownButton;

            // Icon made by Smartline from www.flaticon.com
            loadOptionButton.ToolTip    = "To add multiple shared parameters to multiple categories within a project or family.";
            loadOptionButton.LargeImage = RibbonPanelSetting.GetEmbeddedImage("RevitHandyTools.Resources.add_img_32x32.png");

            // Load to project
            PushButtonData loadToProjectPushButtonData = new PushButtonData("LoadToProject", "Load to project", thisAssemblyPath, "RevitHandyTools.SharedParameters.LoadToProjectCommand");

            loadToProjectPushButtonData.LargeImage = RibbonPanelSetting.GetEmbeddedImage("RevitHandyTools.Resources.add_img_32x32.png");
            loadToProjectPushButtonData.ToolTip    = String.Format(
                "{0}{1}", "Add multiple shared parameters to multiple categories within a project.\n", "This feature is only available in a project for project template");
            loadToProjectPushButtonData.AvailabilityClassName = "RevitHandyTools.AvailableInProjectDocument";

            // Load to family
            PushButtonData loadToFamilyPushButtonData = new PushButtonData("LoadToFamily", "Load to family", thisAssemblyPath, "RevitHandyTools.SharedParameters.LoadToFamilyCommand");

            loadToFamilyPushButtonData.LargeImage = RibbonPanelSetting.GetEmbeddedImage("RevitHandyTools.Resources.add_img_32x32.png");
            loadToFamilyPushButtonData.ToolTip    = String.Format(
                "{0}{1}", "Add multiple shared parameters to multiple categories within a family.\n", "This feature is only available in a family");
            loadToFamilyPushButtonData.AvailabilityClassName = "RevitHandyTools.AvailableInFamilyDocument";

            // Add buttons
            loadOptionButton.AddPushButton(loadToProjectPushButtonData);
            loadOptionButton.AddSeparator();
            loadOptionButton.AddPushButton(loadToFamilyPushButtonData);
        }
        internal override ButtonData Finish()
        {
            PulldownButtonData pulldownButtonData =
                new PulldownButtonData(_name,
                                       _text);


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

            if (_smallImage != null)
            {
                pulldownButtonData.Image = _smallImage;
            }

            if (_description != null)
            {
                pulldownButtonData.LongDescription = _description;
            }

            if (_contextualHelp != null)
            {
                pulldownButtonData.SetContextualHelp(_contextualHelp);
            }

            //pulldownButtonData.

            //_panel.Source.AddItem(pushButtonData);

            return(pulldownButtonData);
        }
Example #5
0
        public Result OnStartup(UIControlledApplication uic_app)
        {
            // get existing SOM Ribbon Tab
            var panels = uic_app.GetRibbonPanels("SOM Tools");

            if (null == panels)
            {
                uic_app.CreateRibbonTab("SOM Tools");
            }
            // get or create panel
            RibbonPanel panel = panels.Where(x => x.Name == "SOM-NY").FirstOrDefault();

            if (null == panel)
            {
                panel = uic_app.CreateRibbonPanel("SOM Tools", "SOM NY");
            }

            // pull down button
            PulldownButtonData pdBtnData  = new PulldownButtonData("SOMNY_Utils", "UTILITIES");
            RibbonItem         ribbonItem = panel.AddItem(pdBtnData);
            PulldownButton     pdBtn      = ribbonItem as PulldownButton;

            // get assembly
            string ExecutingAssemblyPath = System.Reflection.Assembly.GetExecutingAssembly().Location;
            string ExecutingAssemblyName = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;

            string ExecutingAssemblyDirectory = Path.GetDirectoryName(ExecutingAssemblyPath);


            // add items
            pdBtn.AddPushButton(new PushButtonData("RenumberAreasByPickSeq", "Re-Number Areas By Pick Order", Path.Combine(ExecutingAssemblyDirectory, "RenumberAreasByPickSeq.dll"), "RenumberAreasByPickSeq.Cmd_PickAreasBySeq"));

            return(Result.Succeeded);
        }
Example #6
0
        private void AddMenu(UIControlledApplication app)
        {
            //菜单栏
            RibbonPanel        rvtRibbonPanel = app.CreateRibbonPanel("Revit Lookup");
            PulldownButtonData data           = new PulldownButtonData("Options", "Revit Lookup");
            RibbonItem         item           = rvtRibbonPanel.AddItem(data);

            //下拉框
            PulldownButton optionsBtn = item as PulldownButton;

            // Add Icons to main RevitLookup Menu
            optionsBtn.Image      = GetEmbeddedImage("RevitLookup.Resources.RLookup-16.png");
            optionsBtn.LargeImage = GetEmbeddedImage("RevitLookup.Resources.RLookup-32.png");
            //去掉HelloWorld的命令
            //optionsBtn.AddPushButton(new PushButtonData("HelloWorld", "Hello World...", ExecutingAssemblyPath, "RevitLookup.HelloWorld"));
            optionsBtn.AddPushButton(new PushButtonData("查看数据库...", "查看数据库...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopDb"));
            optionsBtn.AddPushButton(new PushButtonData("查看当前选择...", "查看当前选择...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopModScope"));
            optionsBtn.AddPushButton(new PushButtonData("查看活动视图...", "查看活动视图...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopActiveView"));
            optionsBtn.AddPushButton(new PushButtonData("查看应用...", "查看应用...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopApp"));
            optionsBtn.AddPushButton(new PushButtonData("按ID查看...", "按ID查看...", ExecutingAssemblyPath, "RevitLookup.CmdSearchBy"));
            //optionsBtn.AddPushButton(new PushButtonData("Test Framework...", "Test Framework...", ExecutingAssemblyPath, "RevitLookup.CmdTestShell"));

            var pushbutton = rvtRibbonPanel.AddItem(new PushButtonData("快速查看", "快速查看", ExecutingAssemblyPath, "RevitLookup.CmdSnoopModScope")) as PushButton;

            pushbutton.Image      = GetEmbeddedImage("RevitLookup.Resources.RLookup-16.png");
            pushbutton.LargeImage = GetEmbeddedImage("RevitLookup.Resources.RLookup-32.png");

            var pushbuttonSearch = rvtRibbonPanel.AddItem(new PushButtonData("按ID查看", "按ID查看", ExecutingAssemblyPath, "RevitLookup.CmdSearchBy")) as PushButton;

            pushbuttonSearch.Image      = GetEmbeddedImage("RevitLookup.Resources.RLookup-16.png");
            pushbuttonSearch.LargeImage = GetEmbeddedImage("RevitLookup.Resources.RLookup-32.png");
        }
        internal override RibbonItemData Finish()
        {
            var pulldownButtonData = new PulldownButtonData(Name, Text);

            if (LargeImage != null)
            {
                pulldownButtonData.LargeImage = LargeImage;
            }

            if (SmallImage != null)
            {
                pulldownButtonData.Image = SmallImage;
            }

            if (Description != null)
            {
                pulldownButtonData.LongDescription = Description;
            }

            if (ContextualHelp != null)
            {
                pulldownButtonData.SetContextualHelp(ContextualHelp);
            }

            return(pulldownButtonData);
        }
Example #8
0
        private void CreateRibbonPanel(UIControlledApplication application)
        {
            string resourceDir   = CommonUtils.Utils.GetResourceDir();
            string buttonIcons32 = Path.Combine(resourceDir, CommonUtils.DefineUtils.ICONS_32_DIR);
            string buttonIcons16 = Path.Combine(resourceDir, CommonUtils.DefineUtils.ICONS_16_DIR);

            // Create a custom ribbon tab
            application.CreateRibbonTab(Define.RevitToolRibbonTab);

            #region About

            string assembly = @"C:\ProgramData\Autodesk\Revit\Addins\2019\OpeningCombiler" + @"\OpeningTools.dll";

            // Add Combine ribbon panel
            RibbonPanel combineRibbonPanel = application.CreateRibbonPanel(Define.RevitToolRibbonTab, Define.CombinePanel);
            assembly = @"C:\ProgramData\Autodesk\Revit\Addins\2019\OpeningCombiler" + @"\CommonOpeningTools.dll";

            // create pull down button for Combine opening
            PulldownButtonData combineDownButton = new PulldownButtonData("Combine Opening", "Combine \nOpening");
            PulldownButton     groupCombine      = combineRibbonPanel.AddItem(combineDownButton) as PulldownButton;
            combineDownButton.LargeImage = new BitmapImage(new Uri(Path.Combine(buttonIcons32, "Combine_Opening32x32.png"), UriKind.Absolute));
            combineDownButton.Image      = new BitmapImage(new Uri(Path.Combine(buttonIcons16, "Combine_Opening16X16.png"), UriKind.Absolute));
            groupCombine.LargeImage      = new BitmapImage(new Uri(Path.Combine(buttonIcons32, "Combine_Opening32x32.png"), UriKind.Absolute));
            groupCombine.Image           = new BitmapImage(new Uri(Path.Combine(buttonIcons16, "Combine_Opening16X16.png"), UriKind.Absolute));

            // add button for synchronize
            PushButtonData synchronoursButtonData = new PushButtonData("Synchronous", "Synchronous", assembly, "CommonTools.OpeningClient.Synchronize.Commandata");
            PushButton     synchronoursBtn        = groupCombine.AddPushButton(synchronoursButtonData) as PushButton;
            synchronoursBtn.LargeImage = new BitmapImage(new Uri(Path.Combine(buttonIcons32, "Combine_Opening_Synchronous32x32.png"), UriKind.Absolute));
            synchronoursBtn.Image      = new BitmapImage(new Uri(Path.Combine(buttonIcons16, "Combine_Opening_Synchronous16x16.png"), UriKind.Absolute));
            synchronoursBtn.ToolTip    = "Synchronous";

            #endregion About
        }
Example #9
0
        /// <summary>
        /// Add ribbon panel 
        /// </summary>
        /// <param name="a"></param>
        private void AddRibbonPanel(UIControlledApplication a)
        {
            Autodesk.Revit.UI.RibbonPanel rvtRibbonPanel = a.CreateRibbonPanel("Archilizer FEI");
            PulldownButtonData data = new PulldownButtonData("Options", "Family Editor" + Environment.NewLine + "Interface");

            BitmapSource img32 = new BitmapImage (new Uri (@largeIcon));
            BitmapSource img16 = new BitmapImage (new Uri (@smallIcon));

            //RibbonItem item = rvtRibbonPanel.AddItem(data);
            //PushButton optionsBtn = item as PushButton;
            //ContextualHelp ch = new ContextualHelp(ContextualHelpType.Url, "file:///C:/Users/adicted/AppData/Roaming/Autodesk/Revit/Addins/2015/Family Editor Interface _ AutoCAD _ Autodesk App Store.html");
            ContextualHelp ch = new ContextualHelp(ContextualHelpType.Url, @helpFile);
            
            PushButton familyEI = rvtRibbonPanel.AddItem(new PushButtonData("Family Editor", "Family Editor" + Environment.NewLine +  "Interface", path,
                "FamilyEditorInterface.Command")) as PushButton;

            familyEI.Image = img16;
            familyEI.LargeImage = img32;
            familyEI.ToolTip = Message;
            familyEI.SetContextualHelp(ch);
            //optionsBtn.AddPushButton(new PushButtonData("Automatic Dimensions", "AutoDim", path,
            //    "AutomaticDimensions.AutoDim"));
            //optionsBtn.AddPushButton(new PushButtonData("CAD|BIM", "CAD|BIM", path,
            //    "BimpowAddIn.BimToCad"));
        }
Example #10
0
        /// <summary>
        /// Pulldown button for "Command Data", "DB Element" and "Element Filtering"
        /// </summary>
        public void AddPulldownButton(RibbonPanel panel)
        {
            // Create three push buttons for pulldown button drop down

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

            pushButtonData1.LargeImage = NewBitmapImage("Basics.ico");

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

            pushButtonData2.LargeImage = NewBitmapImage("Basics.ico");

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

            pushButtonData3.LargeImage = NewBitmapImage("Basics.ico");

            // Make a pulldown button now
            PulldownButtonData pulldownBtnData = new PulldownButtonData("PulldownButton", "Pulldown");
            PulldownButton     pulldownBtn     = panel.AddItem(pulldownBtnData) as PulldownButton;

            pulldownBtn.AddPushButton(pushButtonData1);
            pulldownBtn.AddPushButton(pushButtonData2);
            pulldownBtn.AddPushButton(pushButtonData3);
        }
Example #11
0
        public Result OnStartup(UIControlledApplication a)
        {
            m_MyFormClearInstance = null;
            m_MyFormLineStyles    = null;
            m_MyFormLinePatterns  = null; // no dialog needed yet; the command will bring it
            thisApp = this;               // static access to this application instance

            string fullPath   = System.Reflection.Assembly.GetExecutingAssembly().Location;
            string folderPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);

            string myRibbon = "AECOM";

            a.CreateRibbonTab(myRibbon);

            RibbonPanel panelA = a.CreateRibbonPanel(myRibbon, "AECOM Tools");

            //Pull Down Button
            PulldownButtonData pullDownData = new PulldownButtonData("General Tools", "General Tools");

            pullDownData.Image      = new BitmapImage(new Uri(Path.Combine(folderPath, "tools_16.png"), UriKind.Absolute));
            pullDownData.LargeImage = new BitmapImage(new Uri(Path.Combine(folderPath, "tools_32.png"), UriKind.Absolute));

            PulldownButton pullDownButton = panelA.AddItem(pullDownData) as PulldownButton;

            PushButton btnClearInstancesPullDown   = pullDownButton.AddPushButton(new PushButtonData("ClearDWG", "Clear imported DWG", fullPath, "GeneralTools.CommandClearInstances"));
            PushButton btnDeleteLineStyles         = pullDownButton.AddPushButton(new PushButtonData("Line Styles", "Line Styles Descr", fullPath, "GeneralTools.CommandLineStyles"));
            PushButton btnRenameLineStylesPullDown = pullDownButton.AddPushButton(new PushButtonData("Line Patterns", "Rename Line Styles", fullPath, "GeneralTools.CommandLinePatterns"));

            return(Result.Succeeded);
        }
        public static bool CreateUI(ScriptPkg pkg, RibbonHandler ribbon)
        {
            // --------------------------------------------------------------------
            // FIND SCRIPTS
            // --------------------------------------------------------------------
            var items = pkg.FindLinkedItems();

            // --------------------------------------------------------------------
            // CREATE ASSEMBLY
            // --------------------------------------------------------------------
            // generate assembly containing script command types
            var lsa = new LinkedScriptAssembly();

            // create types for all the scripts in the structure
            ProcessLinkedScripts(items, (script) =>
            {
                script.ScriptCommandType = lsa.MakeScriptCommandType(script);
            });

            // save and load the created assembly
            lsa.SaveAndLoad();

            // --------------------------------------------------------------------
            // CREATE UI
            // --------------------------------------------------------------------
            RibbonPanel panel;

            try { panel = ribbon.CreateAddinPanel(pkg.Name); }
            catch { return(false); }

            // Currently only supporting two levels in the UI:
            // 1) Pushbuttons on panel for every LinkedScript at the root level
            // 2) Pulldowns containing pushbuttons for all the LinkedScripts recursively found under their directory
            // Lets make the pulldowns first so they are first on the panel
            items.OfType <LinkedItemGroup>().ToList().ForEach((group) =>
            {
                var pullDownData = new PulldownButtonData(group.Name, group.Name)
                {
                    Image      = ImageBuilder.LoadRibbonButtonImage("Ribbon.Grasshopper.GhFolder.png", true),
                    LargeImage = ImageBuilder.LoadRibbonButtonImage("Ribbon.Grasshopper.GhFolder.png"),
                    ToolTip    = group.Tooltip,
                };
                if (panel.AddItem(pullDownData) is PulldownButton pulldown)
                {
                    ProcessLinkedScripts(group.Items, (script) =>
                    {
                        AddPullDownButton(pulldown, script, lsa);
                    });
                }
            });
            // now make pushbuttons
            items.OfType <LinkedScript>().ToList().ForEach((script) =>
            {
                AddPanelButton(panel, script, lsa);
            });

            return(true);
        }
Example #13
0
        /// <summary>
        /// 创建下拉按钮
        /// </summary>
        /// <param name="panel"></param>
        /// <param name="splitname"></param>
        /// <param name="plugins"></param>
        /// <returns></returns>
        private static PulldownButtonData CreatePullButton(RibbonPanel panel, string splitname, List <IFangCommand> plugins)
        {
            PulldownButtonData pulldown = new PulldownButtonData(splitname, splitname);

            pulldown.Image      = plugins[0].ImageURI;
            pulldown.LargeImage = plugins[0].ImageURI;

            return(pulldown);
        }
        private void AddMenu(UIControlledApplication app)
        {
            RibbonPanel        ribbonPanel = app.CreateRibbonPanel("Revit Family Utilities");
            PulldownButtonData data        = new PulldownButtonData("Options", "Revit Family Utilities");

            RibbonItem     item = ribbonPanel.AddItem(data);
            PulldownButton opt  = item as PulldownButton;

            opt.AddPushButton(new PushButtonData("File Upgrade", "File Upgrade", ExecutingAssemblyPath, "FamilyUtilities.FileUpgrade"));
            opt.AddPushButton(new PushButtonData("Parameter Manager", "Parameter Manager", ExecutingAssemblyPath, "FamilyUtilities.ParameterManager"));
        }
        /// <summary>
        /// Stacked Buttons - combination of: push button, dropdown button, combo box and text box.
        /// (no radio button group, split buttons).
        /// Here we define 6 buttons, make grouping of 1, 3, 2 items, and stack them in three layer:
        /// (1) simple push button with "Hello World"
        /// (2) pull down with 3 items: "Command Data", "DB Element" and "Element Filtering".
        /// (3) pull down with 2 items: "Element Modification" and "Model Creation"
        /// </summary>
        public void AddStackedButtons_Complex(RibbonPanel panel)
        {
            // Create six push buttons to group for pull down and stack up

            // #0
            PushButtonData pushButtonData0 = new PushButtonData("StackComplexHelloWorld", "Hello World", _introLabPath, _introLabName + ".HelloWorld");

            pushButtonData0.Image = NewBitmapImage("Basics.ico");

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

            pushButtonData1.Image = NewBitmapImage("Basics.ico");

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

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

            // #4
            PushButtonData pushButtonData4 = new PushButtonData("StackComplexElementModification", "Modify", _introLabPath, _introLabName + ".ElementModification");

            // #5
            PushButtonData pushButtonData5 = new PushButtonData("StackComplexModelCreation", "Create", _introLabPath, _introLabName + ".ModelCreation");

            // Make two sets of pull down

            PulldownButtonData pulldownBtnData1 = new PulldownButtonData("StackComplePulldownButton1", "DB Basics");
            PulldownButtonData pulldownBtnData2 = new PulldownButtonData("StackComplePulldownButton2", "Modeling");

            // Create three item stack.
            IList <RibbonItem> stackedItems = panel.AddStackedItems(pushButtonData0, pulldownBtnData1, pulldownBtnData2);
            PulldownButton     pulldownBtn2 = stackedItems[1] as PulldownButton;
            PulldownButton     pulldownBtn3 = stackedItems[2] as PulldownButton;

            pulldownBtn2.Image = NewBitmapImage("Basics.ico");
            pulldownBtn3.Image = NewBitmapImage("House.ico");

            // Add each sub items
            PushButton button1 = pulldownBtn2.AddPushButton(pushButtonData1);
            PushButton button2 = pulldownBtn2.AddPushButton(pushButtonData2);
            PushButton button3 = pulldownBtn2.AddPushButton(pushButtonData3);
            PushButton button4 = pulldownBtn3.AddPushButton(pushButtonData4);
            PushButton button5 = pulldownBtn3.AddPushButton(pushButtonData5);

            // Note: we need to set the image later. if we do in button data, it won't show in the Ribbon.
            button1.Image = NewBitmapImage("Basics.ico");
            button2.Image = NewBitmapImage("Basics.ico");
            button3.Image = NewBitmapImage("Basics.ico");
            button4.Image = NewBitmapImage("Basics.ico");

            button5.Image = NewBitmapImage("Basics.ico");
        }
Example #16
0
        private void AddMenu(UIControlledApplication app)
        {
            // get the ribbon tab
            try
            {
                app.CreateRibbonTab(RIBBON_TAB);
            }
            catch (Exception) { } // tab already exists

            // get or create panel
            RibbonPanel        panel  = null;
            List <RibbonPanel> panels = app.GetRibbonPanels(RIBBON_TAB);

            foreach (RibbonPanel pnl in panels)
            {
                if (pnl.Name == RIBBON_PANEL)
                {
                    panel = pnl;
                    break;
                }
            }

            // couldn find the panel
            if (panel == null)
            {
                panel = app.CreateRibbonPanel(RIBBON_TAB, RIBBON_PANEL);
            }

            PulldownButtonData data       = new PulldownButtonData("Options", RIBBON_PANEL);
            RibbonItem         item       = panel.AddItem(data);
            PulldownButton     optionsBtn = item as PulldownButton;

            // get the image for the button
            Image       img    = Properties.Resources.location32x32;
            ImageSource imgSrc = GetImageSources(img);

            // create button data

            PushButtonData btnData = new PushButtonData(
                "CursorCoord", "Cursor" + "\n" + "Coordinates", ExecutingAssemblyPath,
                "Coord.Revit.RibbonButton.Command")
            {
                ToolTip         = "Click to save the cursor coordinates",
                LongDescription = "This button makes you save the coordinates of the cursor while you hover over the screen.",
                Image           = imgSrc,
                LargeImage      = imgSrc
            };
            // add the button to the ribbon
            PushButton button = panel.AddItem(btnData) as PushButton;

            button.Enabled = true;
        }
Example #17
0
        static void AddRibbonPanel(UIControlledApplication application)
        {
            // Create a custom ribbon panel
            String tabName = "Archilizer";
            String version = "1.0.1";

            try
            {
                application.CreateRibbonTab(tabName);
            }
            catch (Exception)
            {
            }
            RibbonPanel ribbonPanel = application.CreateRibbonPanel(tabName, "Purge +");

            // Get dll assembly path
            string thisAssemblyPath = Assembly.GetExecutingAssembly().Location;

            PushButtonData delBackupsBtn = CreatePushButton("Delete Backups", "1. Delete Backups", thisAssemblyPath, "Archilizer_Purge.CommandDeleteBackups",
                                                            "Deletes those pesky .00??.rvt files.", "purge.png", "purge_small.png");

            PushButtonData dwgBtn = CreatePushButton("Imported DWG Files", "2. Imported DWG Files", thisAssemblyPath, "Archilizer_Purge.PurgeImportedDWG",
                                                     "Purges imported (but not linked) DWG files in the current project.", "purge.png", "purge_small.png");

            PushButtonData dwgLinesBtn = CreatePushButton("DWG Line Patterns", "3. DWG Line Patterns", thisAssemblyPath, "Archilizer_Purge.PurgeImportedLinePatterns",
                                                          "Purges line patterns brought by imported DWG files.", "purge.png", "purge_small.png");

            PushButtonData viewsBtn = CreatePushButton("Views not on Sheets", "4. Views not on Sheets", thisAssemblyPath, "Archilizer_Purge.CommandViewsNotOnSheets",
                                                       "Purges Views not placed on Sheets. Use at your own risk!", "purge.png", "purge_small.png");

            PushButtonData vtemplateBtn = CreatePushButton("Unused View Templates", "5. Unused View Templates", thisAssemblyPath, "Archilizer_Purge.PurgeUnusedTemplates",
                                                           "Purges Unused View Templates.", "purge.png", "purge_small.png");

            PushButtonData filtersBtn = CreatePushButton("Unused Filters", "6. Unused Filters", thisAssemblyPath, "Archilizer_Purge.PurgeFilters",
                                                         "Purges Unused Filters (Filters that have never been assigned to a View or a View Template).", "purge.png", "purge_small.png");

            PulldownButtonData pd1 = new PulldownButtonData("purgeButton", "Purge");

            pd1.ToolTip = String.Format("v{0}", version);
            BitmapImage pdImage = new BitmapImage(new Uri(String.Format("pack://application:,,,/Archilizer_Purge;component/Resources/{0}", "purge.png")));

            pd1.LargeImage = pdImage;
            pd1.Image      = pdImage;
            PulldownButton pd = ribbonPanel.AddItem(pd1) as PulldownButton;

            pd.AddPushButton(delBackupsBtn);
            pd.AddPushButton(dwgBtn);
            pd.AddPushButton(dwgLinesBtn);
            pd.AddPushButton(viewsBtn);
            pd.AddPushButton(vtemplateBtn);
            pd.AddPushButton(filtersBtn);
        }
        public override void BuildPanelButtons()
        {
            PushButtonMaker buttonMaker = new PushButtonMaker(new Info());

            buttonMaker.BuildPushButtonData();
            PushButtonData buttonData = buttonMaker.GetPushButtonData();
            PushButton     button     = Panel.AddItem(buttonData) as PushButton;

            #region Visual
            PulldownButtonData visualPulldownButtonData = new PulldownButtonData("Visual", "Visual");
            visualPulldownButtonData.LargeImage =
                AssemblyResourceUtils.GetImageFromResource("Commands/Images/Large/blue/visibility.png");
            PulldownButton visualPulldownButton = Panel.AddItem(visualPulldownButtonData) as PulldownButton;


            #endregion

            PulldownButtonData selectionPulldownButtonData = new PulldownButtonData("Selection", "Selection");
            selectionPulldownButtonData.LargeImage =
                AssemblyResourceUtils.GetImageFromResource("Commands/Images/Large/blue/hands-and-gestures.png");
            PulldownButton selectionPulldownButton = Panel.AddItem(selectionPulldownButtonData) as PulldownButton;

            #region Parameters
            PulldownButtonData parametersPulldownButtonData = new PulldownButtonData("Parameters", "Parameters");
            parametersPulldownButtonData.LargeImage =
                AssemblyResourceUtils.GetImageFromResource("Commands/Images/Large/blue/controls.png");
            PulldownButton parametersPulldownButton = Panel.AddItem(parametersPulldownButtonData) as PulldownButton;

            buttonMaker = new PushButtonMaker(new ShowParameterEditor());
            buttonMaker.BuildPushButtonData();
            buttonData = buttonMaker.GetPushButtonData();
            button     = parametersPulldownButton.AddPushButton(buttonData) as PushButton;

            #endregion

            PulldownButtonData viewsPulldownButtonData = new PulldownButtonData("Views", "Views");
            viewsPulldownButtonData.LargeImage =
                AssemblyResourceUtils.GetImageFromResource("Commands/Images/Large/blue/crop.png");
            PulldownButton viewsPulldownButton = Panel.AddItem(viewsPulldownButtonData) as PulldownButton;


            PulldownButtonData worksharingPulldownButtonData = new PulldownButtonData("Worksharing", "Worksharing");
            worksharingPulldownButtonData.LargeImage =
                AssemblyResourceUtils.GetImageFromResource("Commands/Images/Large/blue/network.png");
            PulldownButton worksharingPulldownButton = Panel.AddItem(worksharingPulldownButtonData) as PulldownButton;


            PulldownButtonData analyzePulldownButtonData = new PulldownButtonData("Analyze", "Analyze");
            analyzePulldownButtonData.LargeImage =
                AssemblyResourceUtils.GetImageFromResource("Commands/Images/Large/blue/analytics.png");
            PulldownButton analyzePulldownButton = Panel.AddItem(analyzePulldownButtonData) as PulldownButton;
        }
        /// <summary>
        /// Add buttons for the commands we define in this labs.
        /// Here we stack three push buttons and repeat it as we get more.
        /// </summary>
        public void AddUILabsCommandButtons(RibbonPanel panel)
        {
            // Get the location of this dll.
            string assembly = GetType().Assembly.Location;

            // Create three push buttons to stack up
            // #1
            PushButtonData pushButtonData1 = new PushButtonData("UILabsSelection", "Pick Sampler", assembly, _uiLabName + ".UISelection");

            pushButtonData1.Image = NewBitmapImage("basics.ico");

            // #2
            PushButtonData pushButtonData2 = new PushButtonData("UILabsCreateHouse", "Create House Pick", assembly, _uiLabName + ".UICreateHouse");

            pushButtonData2.Image = NewBitmapImage("House.ico");

            // #3
            PushButtonData pushButtonData3 = new PushButtonData("UILabsTaskDialog", "Dialog Sampler", assembly, _uiLabName + ".UITaskDialog");

            pushButtonData3.Image = NewBitmapImage("basics.ico");

            // #4
            PushButtonData pushButtonData4 = new PushButtonData("UILabsCreateHouseDialog", "Create House Dialog", assembly, _uiLabName + ".UICreateHouseDialog");

            pushButtonData4.Image = NewBitmapImage("House.ico");

            // #5
            // Make three sets of pull down
            PulldownButtonData pulldownBtnData1 = new PulldownButtonData("UILabsPulldownButton1", "Selection");
            PulldownButtonData pulldownBtnData2 = new PulldownButtonData("UILabsPulldownButton2", "Task Dialog");

            // Create three item stack.
            IList <RibbonItem> stackedItems = panel.AddStackedItems(pulldownBtnData1, pulldownBtnData2);
            PulldownButton     pulldownBtn1 = stackedItems[0] as PulldownButton;
            PulldownButton     pulldownBtn2 = stackedItems[1] as PulldownButton;

            pulldownBtn1.Image = NewBitmapImage("Basics.ico");
            pulldownBtn2.Image = NewBitmapImage("Basics.ico");

            // Add each sub items
            PushButton button1 = pulldownBtn1.AddPushButton(pushButtonData1);
            PushButton button2 = pulldownBtn1.AddPushButton(pushButtonData2);
            PushButton button3 = pulldownBtn2.AddPushButton(pushButtonData3);
            PushButton button4 = pulldownBtn2.AddPushButton(pushButtonData4);

            // Note: we need to set the image later. if we do in button data, it won't show in the Ribbon.
            button1.Image = NewBitmapImage("Basics.ico");
            button2.Image = NewBitmapImage("Basics.ico");
            button3.Image = NewBitmapImage("Basics.ico");
            button4.Image = NewBitmapImage("Basics.ico");
        }
Example #20
0
 public void PullDown(RibbonPanel panel)
 {
     //creates a Push button for the get selection command
     PushButtonData bgetselect = new PushButtonData("getselec", "Get Selection", assemblyloca, "Application.getSelection");
     //creates a Push button for the get Collection command
     PushButtonData bgetCollect = new PushButtonData("getcoll", "Get Collection", assemblyloca, "Application.getCollection");
     //creates a pull down menu
     PulldownButtonData pdb1 = new PulldownButtonData("WallsSelection","Wall Selector");
     //assigns the pulldown menu to our panel
     PulldownButton pdb = panel.AddItem(pdb1) as PulldownButton;
     //adds the buttons above to the pulldown menu
     pdb.AddPushButton(bgetselect);
     pdb.AddPushButton(bgetCollect);
 }
Example #21
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;
            }
        }
Example #22
0
        public void PullDown(RibbonPanel panel)
        {
            //creates a Push button for the get selection command
            PushButtonData bgetselect = new PushButtonData("getselec", "Get Selection", assemblyloca, "Application.getSelection");
            //creates a Push button for the get Collection command
            PushButtonData bgetCollect = new PushButtonData("getcoll", "Get Collection", assemblyloca, "Application.getCollection");
            //creates a pull down menu
            PulldownButtonData pdb1 = new PulldownButtonData("WallsSelection", "Wall Selector");
            //assigns the pulldown menu to our panel
            PulldownButton pdb = panel.AddItem(pdb1) as PulldownButton;

            //adds the buttons above to the pulldown menu
            pdb.AddPushButton(bgetselect);
            pdb.AddPushButton(bgetCollect);
        }
Example #23
0
        private void AddMenu(UIControlledApplication app)
        {
            Autodesk.Revit.UI.RibbonPanel rvtRibbonPanel = app.CreateRibbonPanel("Revit Lookup");
            PulldownButtonData            data           = new PulldownButtonData("Options", "Revit Lookup");

            RibbonItem     item       = rvtRibbonPanel.AddItem(data);
            PulldownButton optionsBtn = item as PulldownButton;

            optionsBtn.AddPushButton(new PushButtonData("HelloWorld", "Hello World...", ExecutingAssemblyPath, "RevitLookup.HelloWorld"));
            optionsBtn.AddPushButton(new PushButtonData("Snoop Db..", "Snoop DB...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopDb"));
            optionsBtn.AddPushButton(new PushButtonData("Snoop Current Selection...", "Snoop Current Selection...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopModScope"));
            optionsBtn.AddPushButton(new PushButtonData("Snoop Application...", "Snoop Application...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopApp"));
            optionsBtn.AddPushButton(new PushButtonData("Test Framework...", "Test Framework...", ExecutingAssemblyPath, "RevitLookup.CmdTestShell"));
            optionsBtn.AddPushButton(new PushButtonData("Events...", "Events...", ExecutingAssemblyPath, "RevitLookup.CmdEvents"));
        }
Example #24
0
      private void AddMenu(UIControlledApplication app)
      {
         Autodesk.Revit.UI.RibbonPanel rvtRibbonPanel = app.CreateRibbonPanel("Revit Lookup");
         PulldownButtonData data = new PulldownButtonData("Options", "Revit Lookup");

         RibbonItem item = rvtRibbonPanel.AddItem(data);
         PulldownButton optionsBtn = item as PulldownButton;

         optionsBtn.AddPushButton(new PushButtonData("HelloWorld", "Hello World...", ExecutingAssemblyPath, "RevitLookup.HelloWorld"));
         optionsBtn.AddPushButton(new PushButtonData("Snoop Db..", "Snoop DB...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopDb"));
         optionsBtn.AddPushButton(new PushButtonData("Snoop Current Selection...", "Snoop Current Selection...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopModScope"));
         optionsBtn.AddPushButton(new PushButtonData("Snoop Active View...", "Snoop Active View...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopActiveView"));
         optionsBtn.AddPushButton(new PushButtonData("Snoop Application...", "Snoop Application...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopApp"));
         optionsBtn.AddPushButton(new PushButtonData("Test Framework...", "Test Framework...", ExecutingAssemblyPath, "RevitLookup.CmdTestShell"));
         optionsBtn.AddPushButton(new PushButtonData("Events...", "Events...", ExecutingAssemblyPath, "RevitLookup.CmdEvents"));
      }
Example #25
0
        private void CreateVisibilitySwitcherCommandsOnRibbonAsSlideOut()
        {
            _ribbonPanel.AddSlideOut();
            PulldownButtonData pdbd =
                new PulldownButtonData("VisibiitySwitcher", "VisibiitySwitcher");
            PulldownButton pulldownButton = _ribbonPanel.AddItem(pdbd) as PulldownButton;

            foreach (var commandSetting in _settingsInterpreter.VisibilitySwitcherCommandSettings)
            {
                PushButtonData dynamicCommandPushButton =
                    CreateVisibilitySwitcherPushButtonDataFromSetting(commandSetting);
                dynamicCommandPushButton.ToolTip = commandSetting.VisibilityNameRegex;

                pulldownButton.AddPushButton(dynamicCommandPushButton);
            }
        }
Example #26
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);
        }
Example #27
0
        public Result OnStartup(UIControlledApplication application)
        {
            try
            {
                RibbonPanel ribbonPanel      = application.CreateRibbonPanel("Tools");
                string      thisAssemblyPath = Assembly.GetExecutingAssembly().Location;

                //Pulldownbutton
                PulldownButtonData group1Data = new PulldownButtonData("pullDownButton1", "Room number");
                PulldownButton     group1     = ribbonPanel.AddItem(group1Data) as PulldownButton;

                //Button (Change selected rooms number)
                PushButtonData pushButtonData1 = new PushButtonData("pushButtonData1", "Changes room number", thisAssemblyPath, "FinalniZadatak._1.zadatak.ChangeRoomNumber");
                string         uri1            = "pack://application:,,,/FinalniZadatak;component/Resources/changeRoomNum.png";
                string         tooltip1        = "Changes number of selected rooms from list of all rooms in model";
                SetPushDownButton(group1, pushButtonData1, tooltip1, uri1);

                // Button ( Change all rooms numbers in model)
                PushButtonData pushButtonData2 = new PushButtonData("pushButtonData2", "Changes rooms numbers", thisAssemblyPath, "FinalniZadatak._1.zadatak.AutoChangeRoomsNumbers");
                string         uri2            = "pack://application:,,,/FinalniZadatak;component/Resources/changeRoomsNums.png";
                string         tooltip2        = "Changes numbers of all rooms in model automatically";
                SetPushDownButton(group1, pushButtonData2, tooltip2, uri2);

                group1.LargeImage = new BitmapImage(new Uri(uri1));


                //Button (List of furniture)
                PushButtonData pushButtonData3 = new PushButtonData("pushButtonData3", "Furniture", thisAssemblyPath, "FinalniZadatak._2.zadatak.Furniture");
                string         uri3            = "pack://application:,,,/FinalniZadatak;component/Resources/furnitureList.png";
                string         tooltip3        = "Show all parameters of furniture in active view sorted by type";
                SetPushButton(ribbonPanel, pushButtonData3, tooltip3, uri3);


                //Button (Change element parameter)
                PushButtonData pushButtonData4 = new PushButtonData("pushButtonData4", "Parameters", thisAssemblyPath, "FinalniZadatak._3.zadatak.ChangeElParam");
                string         uri4            = "pack://application:,,,/FinalniZadatak;component/Resources/changeElemParam.png";
                string         tooltip4        = "Allows user to select one element from model and change element parameter with string storage type and if parameter is not read-only.";
                tooltip4 += "This command will change same parameter to all elements in model with same type as selected element";
                SetPushButton(ribbonPanel, pushButtonData4, tooltip4, uri4);
            }
            catch (Exception ex)
            {
                TaskDialog.Show("Excepton", ex.Message);
            }

            return(Result.Succeeded);
        }
Example #28
0
        /// <summary>
        ///     Creates a pulldown button.
        /// </summary>
        /// <param name="pnl"></param>
        /// <param name="pbd"></param>
        /// <param name="pbds"></param>
        /// <returns></returns>
        public static PulldownButton AddPushButton(this RibbonPanel pnl, PulldownButtonData 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 (!(pnl.AddItem(pbd) is PulldownButton 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);
        }
Example #29
0
        public PulldownButtonData add_items(List <string> infor_addin) //name_in_UI | name_image | tooltip
        {
            PulldownButtonData pull_down = null;

            try
            {
                // add a pull-down button to the panel
                pull_down = new PulldownButtonData(infor_addin[0], infor_addin[0]);
                Uri imageSourseGetQuantity = new Uri(pathImage + infor_addin[1]);
                pull_down.LargeImage = new BitmapImage(imageSourseGetQuantity);
                pull_down.ToolTip    = infor_addin[2];
            }
            catch (Exception)
            {
            }
            return(pull_down);
        }
Example #30
0
        /// <summary>
        /// Add samples of categories not in default categories
        /// </summary>
        private void AddCustomizedPulldownMenus()
        {
            int iCount = m_customizedMenus.Count;

            // Sort sample items in every category by display name
            SortSampleItemsInOneCategory(m_customizedMenus);

            int i = 0;

            while (iCount >= 3)
            {
                string             name  = m_customizedMenus.Keys[i++];
                PulldownButtonData data1 = new PulldownButtonData(name, name);
                name = m_customizedMenus.Keys[i++];
                PulldownButtonData data2 = new PulldownButtonData(name, name);
                name = m_customizedMenus.Keys[i++];
                PulldownButtonData data3   = new PulldownButtonData(name, name);
                IList <RibbonItem> buttons = m_panelRvtSamples.AddStackedItems(data1, data2, data3);
                AddSamplesToStackedButtons(buttons);

                iCount -= 3;
            }

            if (iCount == 2)
            {
                string             name  = m_customizedMenus.Keys[i++];
                PulldownButtonData data1 = new PulldownButtonData(name, name);
                name = m_customizedMenus.Keys[i++];
                PulldownButtonData data2   = new PulldownButtonData(name, name);
                IList <RibbonItem> buttons = m_panelRvtSamples.AddStackedItems(data1, data2);
                AddSamplesToStackedButtons(buttons);
            }
            else if (iCount == 1)
            {
                string             name = m_customizedMenus.Keys[i];
                PulldownButtonData pulldownButtonData = new PulldownButtonData(name, name);
                PulldownButton     button             = m_panelRvtSamples.AddItem(pulldownButtonData) as PulldownButton;
                List <SampleItem>  sampleItems        = m_customizedMenus.Values[m_customizedMenus.IndexOfKey(button.Name)];
                foreach (SampleItem item in sampleItems)
                {
                    AddSampleToPulldownMenu(button, item);
                }
            }
        }
Example #31
0
        private void AddMenu(UIControlledApplication app)
        {
            RibbonPanel        rvtRibbonPanel = app.CreateRibbonPanel("Revit Lookup");
            PulldownButtonData data           = new PulldownButtonData("Options", "Revit Lookup");

            RibbonItem     item       = rvtRibbonPanel.AddItem(data);
            PulldownButton optionsBtn = item as PulldownButton;

            // Add Icons to main RevitLookup Menu
            optionsBtn.Image      = GetEmbeddedImage("RevitLookup.Resources.RLookup-16.png");
            optionsBtn.LargeImage = GetEmbeddedImage("RevitLookup.Resources.RLookup-32.png");

            optionsBtn.AddPushButton(new PushButtonData("HelloWorld", "Hello World...", ExecutingAssemblyPath, "RevitLookup.HelloWorld"));
            optionsBtn.AddPushButton(new PushButtonData("Snoop Db..", "Snoop DB...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopDb"));
            optionsBtn.AddPushButton(new PushButtonData("Snoop Current Selection...", "Snoop Current Selection...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopModScope"));
            optionsBtn.AddPushButton(new PushButtonData("Snoop Active View...", "Snoop Active View...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopActiveView"));
            optionsBtn.AddPushButton(new PushButtonData("Snoop Application...", "Snoop Application...", ExecutingAssemblyPath, "RevitLookup.CmdSnoopApp"));
            optionsBtn.AddPushButton(new PushButtonData("Test Framework...", "Test Framework...", ExecutingAssemblyPath, "RevitLookup.CmdTestShell"));
        }
Example #32
0
        private void AddRibbonPanel(UIControlledApplication app)
        {
            RibbonPanel        rvtRibbonPanel = app.CreateRibbonPanel("STF Exporter: v" + Assembly.GetExecutingAssembly().GetName().Version);
            PulldownButtonData data           = new PulldownButtonData("Options", "STF Export");
            RibbonItem         pb_item        = rvtRibbonPanel.AddItem(data);
            PulldownButton     optionsBtn     = pb_item as PulldownButton;

            optionsBtn.AddPushButton(new PushButtonData("STF Export CP1251", "Export with CP1251 charsets", assyPath, "STFExporter.CmdExportAsCP1251"));
            optionsBtn.AddPushButton(new PushButtonData("STF Export UTF8", "Export with UTF8 charsets", assyPath, "STFExporter.CmdExportAsUTF8"));
            optionsBtn.AddPushButton(new PushButtonData("About..", "About dialog", assyPath, "STFExporter.AboutDlg"));

            optionsBtn.LargeImage      = NewBitmapImage("stfexport.png");
            optionsBtn.ToolTip         = "Export Revit Spaces to STF file";
            optionsBtn.LongDescription = "Exports Spaces in Revit model to STF file for use in application such as DIALux";

            //ContextualHe/lp contextHelp = new ContextualHelp(ContextualHelpType.ChmFile, dir + "/Resources/STFExporter Help.htm");
            ContextualHelp contextHelp = new ContextualHelp(ContextualHelpType.Url, "https://github.com/kmorin/STF-Exporter");

            pb_item.SetContextualHelp(contextHelp);
        }
Example #33
0
        public Autodesk.Revit.UI.Result OnStartup(UIControlledApplication application)
        {
            RibbonPanel        rvtRibbonPanel = application.CreateRibbonPanel("CadFaster, Inc.");
            PulldownButtonData data           = new PulldownButtonData("Options", "CadFaster, Inc.");

            RibbonItem     item       = rvtRibbonPanel.AddItem(data);
            PulldownButton optionsBtn = item as PulldownButton;

            optionsBtn.AddPushButton(new PushButtonData("ExeWrite", "ExeWrite",
                                                        @"C:\CadFaster\Revit\CF_RevitBridge.dll", "ExeWriter.CF_RevitBridge"));
            //PushButton pushButton = ribbonPanel.AddPushButton("ExeWrite", "ExeWrite",
            //@"G:\Projects\reload_addin\RevitPlugin\Bridge\bin\Debug\Bridge.dll", "rev.Bridge");

            Uri         uriImageMain   = new Uri(@"C:\CadFaster\Revit\Images\Company.gif");
            BitmapImage largeImageMain = new BitmapImage(uriImageMain);

            optionsBtn.LargeImage = largeImageMain;

            return(Autodesk.Revit.UI.Result.Succeeded);
        }
Example #34
0
    /// <summary>
    /// Add buttons for the commands we define in this labs. 
    /// Here we stack three push buttons and repeat it as we get more. 
    /// </summary>
    public void AddUILabsCommandButtons(RibbonPanel panel)
    {
      // Get the location of this dll. 
      string assembly = GetType().Assembly.Location;

      // Create three push buttons to stack up 
      // #1 
      PushButtonData pushButtonData1 = new PushButtonData("UILabsSelection", "Pick Sampler", assembly, _uiLabName + ".UISelection");
      pushButtonData1.Image = NewBitmapImage("basics.ico");

      // #2 
      PushButtonData pushButtonData2 = new PushButtonData("UILabsCreateHouse", "Create House Pick", assembly, _uiLabName + ".UICreateHouse");
      pushButtonData2.Image = NewBitmapImage("House.ico");

      // #3 
      PushButtonData pushButtonData3 = new PushButtonData("UILabsTaskDialog", "Dialog Sampler", assembly, _uiLabName + ".UITaskDialog");
      pushButtonData3.Image = NewBitmapImage("basics.ico");

      // #4 
      PushButtonData pushButtonData4 = new PushButtonData("UILabsCreateHouseDialog", "Create House Dialog", assembly, _uiLabName + ".UICreateHouseDialog");
      pushButtonData4.Image = NewBitmapImage("House.ico");

      // #5 
      // Make three sets of pull down 
      PulldownButtonData pulldownBtnData1 = new PulldownButtonData("UILabsPulldownButton1", "Selection");
      PulldownButtonData pulldownBtnData2 = new PulldownButtonData("UILabsPulldownButton2", "Task Dialog");

      // Create three item stack. 
      IList<RibbonItem> stackedItems = panel.AddStackedItems(pulldownBtnData1, pulldownBtnData2);
      PulldownButton pulldownBtn1 = stackedItems[0] as PulldownButton;
      PulldownButton pulldownBtn2 = stackedItems[1] as PulldownButton;

      pulldownBtn1.Image = NewBitmapImage("Basics.ico");
      pulldownBtn2.Image = NewBitmapImage("Basics.ico");

      // Add each sub items 
      PushButton button1 = pulldownBtn1.AddPushButton(pushButtonData1);
      PushButton button2 = pulldownBtn1.AddPushButton(pushButtonData2);
      PushButton button3 = pulldownBtn2.AddPushButton(pushButtonData3);
      PushButton button4 = pulldownBtn2.AddPushButton(pushButtonData4);

      // Note: we need to set the image later. if we do in button data, it won't show in the Ribbon. 
      button1.Image = NewBitmapImage("Basics.ico");
      button2.Image = NewBitmapImage("Basics.ico");
      button3.Image = NewBitmapImage("Basics.ico");
      button4.Image = NewBitmapImage("Basics.ico");
    }
Example #35
0
        /// <summary>
        /// Add samples of categories not in default categories
        /// </summary>
        private void AddCustomizedPulldownMenus()
        {
            int iCount = m_customizedMenus.Count;

            // Sort sample items in every category by display name
            SortSampleItemsInOneCategory(m_customizedMenus);

            int i = 0;

            while (iCount >= 3)
            {
                string name = m_customizedMenus.Keys[i++];
                PulldownButtonData data1 = new PulldownButtonData(name, name);
                name = m_customizedMenus.Keys[i++];
                PulldownButtonData data2 = new PulldownButtonData(name, name);
                name = m_customizedMenus.Keys[i++];
                PulldownButtonData data3 = new PulldownButtonData(name, name);
                IList<RibbonItem> buttons = m_panelRvtSamples.AddStackedItems(data1, data2, data3);
                AddSamplesToStackedButtons(buttons);

                iCount -= 3;
            }

            if (iCount == 2)
            {
                string name = m_customizedMenus.Keys[i++];
                PulldownButtonData data1 = new PulldownButtonData(name, name);
                name = m_customizedMenus.Keys[i++];
                PulldownButtonData data2 = new PulldownButtonData(name, name);
                IList<RibbonItem> buttons = m_panelRvtSamples.AddStackedItems(data1, data2);
                AddSamplesToStackedButtons(buttons);
            }
            else if (iCount == 1)
            {
                string name = m_customizedMenus.Keys[i];
                PulldownButtonData pulldownButtonData = new PulldownButtonData(name, name);
                PulldownButton button = m_panelRvtSamples.AddItem(pulldownButtonData) as PulldownButton;
                List<SampleItem> sampleItems = m_customizedMenus.Values[m_customizedMenus.IndexOfKey(button.Name)];
                foreach (SampleItem item in sampleItems)
                {
                    AddSampleToPulldownMenu(button, item);
                }
            }
        }
Example #36
0
        /// <summary>
        /// Implement this method to implement the external application which should be called when 
        /// Revit starts before a file or default template is actually loaded.
        /// </summary>
        /// <param name="application">An object that is passed to the external application 
        /// which contains the controlled application.</param>
        /// <returns>Return the status of the external application. 
        /// A result of Succeeded means that the external application successfully started. 
        /// Cancelled can be used to signify that the user cancelled the external operation at 
        /// some point.
        /// If false is returned then Revit should inform the user that the external application 
        /// failed to load and the release the internal reference.</returns>
        public Autodesk.Revit.UI.Result OnStartup(UIControlledApplication application)
        {
            m_application = application;
            Autodesk.Revit.UI.Result rc = Autodesk.Revit.UI.Result.Failed;

            try
            {
                // Check whether the file contains samples' list exists
                // If not, return failure
                string filename = m_fileNameStem;
                if (!GetFilepath(ref filename))
                {
                    ErrorMsg(m_fileNameStem + " not found.");
                    return rc;
                }

                // Read all lines from the file
                string[] lines = ReadAllLinesWithInclude(filename);
                // Remove comments
                lines = RemoveComments(lines);

                // Add default pulldown menus of samples to Revit
                m_panelRvtSamples = application.CreateRibbonPanel("RvtSamples");
                int i = 0;
                List<PulldownButtonData> pdData = new List<PulldownButtonData>(3);
                foreach(string category in Enum.GetNames(typeof(DefaultPulldownMenus)))
                {
                    if((i + 1) % 3 == 1)
                    {
                        pdData.Clear();
                    }

                    //
                    // Prepare PulldownButtonData for add stacked buttons operation
                    //
                    string displayName = GetDisplayNameByEnumName(category);

                    List<SampleItem> sampleItems = new List<SampleItem>();
                    m_defaultMenus.Add(category, sampleItems);

                    PulldownButtonData data = new PulldownButtonData(displayName, displayName);
                    pdData.Add(data);

                    //
                    // Add stacked buttons to RvtSamples panel and set their display names and images
                    //
                    if ((i + 1) % 3 == 0)
                    {
                        IList<RibbonItem> addedButtons = m_panelRvtSamples.AddStackedItems(pdData[0], pdData[1], pdData[2]);
                        foreach (RibbonItem item in addedButtons)
                        {
                            String name = item.ItemText;
                            string enumName = GetEnumNameByDisplayName(name);
                            PulldownButton button = item as PulldownButton;
                            button.Image = new BitmapImage(
                                new Uri(Path.Combine(s_assemblyDirectory, "Icons\\" + enumName + ".ico"), UriKind.Absolute));
                            button.ToolTip = Properties.Resource.ResourceManager.GetString(enumName);
                            m_pulldownButtons.Add(name, button);
                        }
                    }

                    i++;
                }

                //
                // Add sample items to the pulldown buttons
                //
                int n = lines.GetLength(0);
                int k = 0;
                while (k < n)
                {
                    AddSample(lines, n, ref k);
                }

                AddSamplesToDefaultPulldownMenus();
                AddCustomizedPulldownMenus();

                rc = Autodesk.Revit.UI.Result.Succeeded;
            }
            catch (Exception e)
            {
                ErrorMsg(e.Message);
            }
            return rc;
        }
Example #37
0
    /// <summary>
    /// Pulldown button for "Command Data", "DB Element" and "Element Filtering"
    /// </summary>
    public void AddPulldownButton(RibbonPanel panel)
    {
      // Create three push buttons for pulldown button drop down 

      // #1 
      PushButtonData pushButtonData1 = new PushButtonData("PulldownCommandData", "Command Data", _introLabPath, _introLabName + ".CommandData");
      pushButtonData1.LargeImage = NewBitmapImage("Basics.ico");

      // #2 
      PushButtonData pushButtonData2 = new PushButtonData("PulldownDbElement", "DB Element", _introLabPath, _introLabName + ".DBElement");
      pushButtonData2.LargeImage = NewBitmapImage("Basics.ico");

      // #3 
      PushButtonData pushButtonData3 = new PushButtonData("PulldownElementFiltering", "Filtering", _introLabPath, _introLabName + ".ElementFiltering");
      pushButtonData3.LargeImage = NewBitmapImage("Basics.ico");

      // Make a pulldown button now 
      PulldownButtonData pulldownBtnData = new PulldownButtonData("PulldownButton", "Pulldown");
      PulldownButton pulldownBtn = panel.AddItem(pulldownBtnData) as PulldownButton;
      pulldownBtn.AddPushButton(pushButtonData1);
      pulldownBtn.AddPushButton(pushButtonData2);
      pulldownBtn.AddPushButton(pushButtonData3);
    }
Example #38
0
        /// <summary>
        /// Create a ribbon panel for the MEP sample application.
        /// We present a column of three buttons: Electrical, HVAC and About.
        /// The first two include subitems, the third does not.
        /// </summary>
        static void AddRibbonPanel( 
            UIControlledApplication a)
        {
            const int nElectricalCommands = 3;

              const string m = "AdnRme.Cmd"; // namespace and command prefix

              string path = Assembly.GetExecutingAssembly().Location;

              string[] text = new string[] {
            "Electrical Connectors",
            "Electrical System Browser",
            //"Electrical Hierarchy",
            //"Electrical Hierarchy 2",
            "Unhosted elements",
            "Assign flow to terminals",
            "Change size",
            "Populate CFM per SF on spaces",
            "Reset demo",
            "About..."
              };

              string[] classNameStem = new string[] {
            "ElectricalConnectors",
            "ElectricalSystemBrowser",
            //"ElectricalHierarchy",
            //"ElectricalHierarchy2",
            "UnhostedElements",
            "AssignFlowToTerminals",
            "ChangeSize",
            "PopulateCfmPerSf",
            "ResetDemo",
            "About"
              };

              int n = classNameStem.Length;

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

              // Create three stacked buttons for the HVAC,
              // electrical and about commands, respectively:

              RibbonPanel panel = a.CreateRibbonPanel(
            "MEP Sample" );

              PulldownButtonData d1 = new PulldownButtonData(
            "Electrical", "Electrical" );

              d1.ToolTip = "Electrical Commands";

              PulldownButtonData d2 = new PulldownButtonData(
            "Hvac", "HVAC" );

              d2.ToolTip = "HVAC Commands";

              n = n - 1;

              PushButtonData d3 = new PushButtonData(
            classNameStem[n], text[n], path, m + classNameStem[n] );

              d3.ToolTip = "About the HVAC and Electrical MEP Sample.";

              IList<RibbonItem> ribbonItems = panel.AddStackedItems(
            d1, d2, d3 );

              // Add subitems to the HVAC and
              // electrical pulldown buttons:

              PulldownButton pulldown;
              PushButton pb;
              int i, j;

              for( i = 0; i < n; ++i )
              {
            j = i < nElectricalCommands ? 0 : 1;
            pulldown = ribbonItems[j] as PulldownButton;

            PushButtonData pbd = new PushButtonData(
              text[i], text[i], path, m + classNameStem[i] );

            pb = pulldown.AddPushButton( pbd );

            pb.ToolTip = text[i];
              }
        }
Example #39
0
    /// <summary>
    /// Stacked Buttons - combination of: push button, dropdown button, combo box and text box. 
    /// (no radio button group, split buttons). 
    /// Here we define 6 buttons, make grouping of 1, 3, 2 items, and stack them in three layer: 
    /// (1) simple push button with "Hello World" 
    /// (2) pull down with 3 items: "Command Data", "DB Element" and "Element Filtering". 
    /// (3) pull down with 2 items: "Element Modification" and "Model Creation" 
    /// </summary>
    public void AddStackedButtons_Complex(RibbonPanel panel)
    {
      // Create six push buttons to group for pull down and stack up 

      // #0 
      PushButtonData pushButtonData0 = new PushButtonData("StackComplexHelloWorld", "Hello World", _introLabPath, _introLabName + ".HelloWorld");
      pushButtonData0.Image = NewBitmapImage("Basics.ico");

      // #1 
      PushButtonData pushButtonData1 = new PushButtonData("StackComplexCommandData", "Command Data", _introLabPath, _introLabName + ".CommandData");
      pushButtonData1.Image = NewBitmapImage("Basics.ico");

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

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

      // #4 
      PushButtonData pushButtonData4 = new PushButtonData("StackComplexElementModification", "Modify", _introLabPath, _introLabName + ".ElementModification");

      // #5 
      PushButtonData pushButtonData5 = new PushButtonData("StackComplexModelCreation", "Create", _introLabPath, _introLabName + ".ModelCreation");

      // Make two sets of pull down 

      PulldownButtonData pulldownBtnData1 = new PulldownButtonData("StackComplePulldownButton1", "DB Basics");
      PulldownButtonData pulldownBtnData2 = new PulldownButtonData("StackComplePulldownButton2", "Modeling");

      // Create three item stack. 
      IList<RibbonItem> stackedItems = panel.AddStackedItems(pushButtonData0, pulldownBtnData1, pulldownBtnData2);
      PulldownButton pulldownBtn2 = stackedItems[1] as PulldownButton;
      PulldownButton pulldownBtn3 = stackedItems[2] as PulldownButton;

      pulldownBtn2.Image = NewBitmapImage("Basics.ico");
      pulldownBtn3.Image = NewBitmapImage("House.ico");

      // Add each sub items 
      PushButton button1 = pulldownBtn2.AddPushButton(pushButtonData1);
      PushButton button2 = pulldownBtn2.AddPushButton(pushButtonData2);
      PushButton button3 = pulldownBtn2.AddPushButton(pushButtonData3);
      PushButton button4 = pulldownBtn3.AddPushButton(pushButtonData4);
      PushButton button5 = pulldownBtn3.AddPushButton(pushButtonData5);

      // Note: we need to set the image later. if we do in button data, it won't show in the Ribbon. 
      button1.Image = NewBitmapImage("Basics.ico");
      button2.Image = NewBitmapImage("Basics.ico");
      button3.Image = NewBitmapImage("Basics.ico");
      button4.Image = NewBitmapImage("Basics.ico");

      button5.Image = NewBitmapImage("Basics.ico");
    }
Example #40
0
File: Ribbon.cs Project: AMEE/revit
        /// <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);
        }