예제 #1
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);
        }
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            try
            {
                if (Properties.Settings.Default.AssemblyNeedLoading)
                {
                    //2 August 2019: Start, The the following lines were added in Take 10 in order prevent double loading of packages.
                    Microsoft.Win32.RegistryKey rkbase = null;
                    rkbase = Microsoft.Win32.RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, Microsoft.Win32.RegistryView.Registry64);
                    string stringTargetOokiiVersion = rkbase.OpenSubKey("SOFTWARE\\Wow6432Node\\Pedersen Read Limited\\cSharpPlaypen joshnewzealand").GetValue("OokiiVersion").ToString();
                    string stringTargetXceedVersion = rkbase.OpenSubKey("SOFTWARE\\Wow6432Node\\Pedersen Read Limited\\cSharpPlaypen joshnewzealand").GetValue("XceedVersion").ToString();
                    if (AppDomain.CurrentDomain.GetAssemblies().Where(x => x.FullName == stringTargetOokiiVersion).Count() == 0)
                    {
                        string stringTargetDirectory = rkbase.OpenSubKey("SOFTWARE\\Pedersen Read Limited\\cSharpPlaypen joshnewzealand").GetValue("TARGETDIR").ToString();
                        Assembly.Load(File.ReadAllBytes(stringTargetDirectory + "\\Ookii.Dialogs.Wpf.dll"));
                    }
                    if (AppDomain.CurrentDomain.GetAssemblies().Where(x => x.FullName == stringTargetXceedVersion).Count() == 0)
                    {
                        string stringTargetDirectory = rkbase.OpenSubKey("SOFTWARE\\Pedersen Read Limited\\cSharpPlaypen joshnewzealand").GetValue("TARGETDIR").ToString();
                        Assembly.Load(File.ReadAllBytes(stringTargetDirectory + "\\Xceed.Wpf.Toolkit.dll"));
                    }
                    //2 August 2019: End.


                    Properties.Settings.Default.AssemblyNeedLoading = false;
                    Properties.Settings.Default.Save();
                }

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

                Assembly objAssembly01  = Assembly.Load(File.ReadAllBytes(path + "\\" + dllModuleName + ".dll"));
                string   strCommandName = "ThisApplication";

                IEnumerable <Type> myIEnumerableType = GetTypesSafely(objAssembly01);
                foreach (Type objType in myIEnumerableType)
                {
                    if (objType.IsClass)
                    {
                        if (objType.Name.ToLower() == strCommandName.ToLower())
                        {
                            object   ibaseObject = Activator.CreateInstance(objType);
                            object[] arguments   = new object[] { commandData, "Button_01_Invoke01|" + path, elements };
                            object   result      = null;

                            result = objType.InvokeMember("Start", BindingFlags.Default | BindingFlags.InvokeMethod, null, ibaseObject, arguments);

                            break;
                        }
                    }
                }
            }

            #region catch and finally
            catch (Exception ex)
            {
                ParentSupportMethods.writeDebug("Invoke01" + Environment.NewLine + ex.Message + Environment.NewLine + ex.InnerException, true);
            }
            finally
            {
            }
            #endregion

            return(Result.Succeeded);
        }