/// <summary>
        /// Checks DTM messages for a critical error
        /// </summary>
        /// <returns>List with critical error message or list with empty string.</returns>
        public List <string> Run()
        {
            Logging.Enter(this, MethodBase.GetCurrentMethod().Name);

            bool          result;
            List <string> resultStrings;

            result  = Functions.Dialogs.Execution.EventLog.OpenEventLog();
            result &= Functions.Dialogs.Validation.EventLog.IsEventLogOpen();

            resultStrings = Functions.Dialogs.Execution.EventLog.GetAllCriticalErrorFromEventLog();
            if (resultStrings.Count == 0)
            {
                Reporting.Debug("No Critical Error found.");
                resultStrings.Add(string.Empty);
            }

            result &= Functions.Dialogs.Execution.EventLog.CloseEventLog();
            result &= Functions.Dialogs.Validation.EventLog.IsEventLogClosed();

            if (!result)
            {
                Reporting.Debug("An error occured while GetCritical Error");
            }

            return(resultStrings);
        }
        /// <summary>
        /// The open program functions.
        /// </summary>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public static bool OpenMenu()
        {
            Logging.Enter(typeof(DtmFunctions), MethodBase.GetCurrentMethod().Name);

            DeviceCareApplication repo = DeviceCareApplication.Instance;
            MenuItem menuItem;

            bool result;

            Host.Local.TryFindSingle(repo.MenuArea.MainMenu.DTMFunctionsInfo.AbsolutePath, out menuItem);
            if (menuItem != null && menuItem.Visible)
            {
                menuItem.Click();
                Reporting.Debug("Menu item DTM Functions found and clicked.");

                if (Validation.DtmFunctions.IsMenuItemAvailable())
                {
                    result = true;
                }
                else
                {
                    result = false;
                }
            }
            else
            {
                Reporting.Error("Could not access menu DTM Functions.");
                result = false;
            }

            return(result);
        }
        /// <summary>
        /// The is progress indicator available.
        /// </summary>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public static bool WaitUntilProgressIndicatorBecomesNotAvailable()
        {
            Logging.Enter(typeof(ProgressIndicator), MethodBase.GetCurrentMethod().Name);

            try
            {
                Stopwatch stopwatch = new Stopwatch();
                stopwatch.Start();

                Reporting.Debug("Wait until Progress Indicator becomes not visible.");
                while (stopwatch.ElapsedMilliseconds < Common.DefaultValues.GeneralTimeout)
                {
                    if (!IsProgressIndicatorVisible())
                    {
                        Reporting.Debug("Progress Indicator is not visible.");
                        return(true);
                    }
                }

                Reporting.Error(string.Format("Progress Indicator is still visible after {0} miliseconds.", Common.DefaultValues.GeneralTimeout));
                return(false);
            }
            catch (Exception exception)
            {
                Reporting.Error(exception.Message);
                return(false);
            }
        }
Exemple #4
0
        /// <summary>
        /// The run.
        /// </summary>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public bool Run()
        {
            Logging.Enter(this, MethodBase.GetCurrentMethod().Name);

            try
            {
                var repo = DeviceCareApplication.Instance;
                if (repo.MenuArea.MainMenu.MainMenuItems.ButtonHomeInfo.Exists())
                {
                    Reporting.Debug("Close Project by pressing home button.");
                    repo.MenuArea.MainMenu.MainMenuItems.ButtonHome.Click();

                    repo.ApplicationArea.ConnectionSelection.ButtonConnectionAutomaticInfo.WaitForExists(Common.DefaultValues.GeneralTimeout);
                    if (repo.ApplicationArea.ConnectionSelection.ButtonConnectionAutomaticInfo.Exists())
                    {
                        Reporting.Debug("Project closed. ");
                        return(true);
                    }

                    Reporting.Error("Button Connect automatically is not available.");
                    return(false);
                }

                Reporting.Error("Button Home is not available");
                return(false);
            }
            catch (Exception exception)
            {
                Reporting.Error("Button Connect automatically did not become available.");
                Reporting.Error(exception.Message);
                return(false);
            }
        }
        /// <summary>
        /// The run.
        /// </summary>
        /// <returns>
        /// The <see cref="List"/>.
        /// </returns>
        public List <string> Run()
        {
            Logging.Enter(this, MethodBase.GetCurrentMethod().Name);

            List <string> messages = null;

            if (Functions.Dialogs.Execution.EventLog.OpenEventLog())
            {
                messages = Functions.Dialogs.Execution.EventLog.GetAllMessagesFromEventLog();
                if (messages != null)
                {
                    if (messages.Count > 0)
                    {
                        foreach (var message in messages)
                        {
                            Reporting.Debug(message);
                        }
                    }
                    else
                    {
                        Reporting.Debug("There isn´t any message in Event Log available");
                    }
                }
                else
                {
                    Reporting.Debug("There isn´t any message in Event Log available");
                }
            }

            return(messages);
        }
Exemple #6
0
        /// <summary>
        /// The wait until status message becomes available.
        /// </summary>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public static bool WaitUntilStatusMessageBecomesAvailable()
        {
            Logging.Enter(typeof(ProgressIndicator), MethodBase.GetCurrentMethod().Name);

            try
            {
                DeviceCareApplication repo = DeviceCareApplication.Instance;
                repo.StatusArea.ProgressIndicatorInfo.WaitForExists(Common.DefaultValues.GeneralTimeout);
                Reporting.Debug("Progress Indicator is available.");
                Stopwatch stopwatch = new Stopwatch();
                stopwatch.Start();

                while (stopwatch.ElapsedMilliseconds < Common.DefaultValues.GeneralTimeout)
                {
                    if (IsStatusMessageAvailable())
                    {
                        repo.StatusArea.ProgressIndicator.MoveTo();
                        Reporting.Debug("Status Message is available.");
                        return(true);
                    }
                }

                Reporting.Error(string.Format("Status Message is not available after {0} miliseconds.", Common.DefaultValues.GeneralTimeout));
                return(false);
            }
            catch (Exception exception)
            {
                Reporting.Error(exception.Message);
                return(false);
            }
        }
        /// <summary>
        /// The close dtm function.
        /// </summary>
        /// <param name="functionName">
        /// The function name.
        /// </param>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public static bool CloseDtmFunction(string functionName)
        {
            Logging.Enter(typeof(DtmFunctions), MethodBase.GetCurrentMethod().Name);

            bool result = true;

            if (!DeviceCareModuleFunctions.IsClosingElementAvailable())
            {
                Reporting.Debug("Cannot close module this way.");
                Reporting.Debug("Open and close another module to make close button available.");
                string helperFunctionName = ProgramFunctions.OpenShowProgress();
                if (helperFunctionName.Equals(string.Empty))
                {
                    result = false;
                }

                result &= AdditionalFunctions.CloseAdditionalFunction(helperFunctionName);
            }

            Reporting.Debug(string.Format("Select module {0}.", functionName));
            result &= SelectDtmFunctions(functionName);
            Reporting.Debug(string.Format("Close module {0}.", functionName));
            result &= CloseTabPage(functionName);
            return(result);
        }
Exemple #8
0
        /// <summary>
        /// The run.
        /// </summary>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public bool Run()
        {
            Logging.Enter(this, MethodBase.GetCurrentMethod().Name);

            var deviceCareProcessFunctions = new DeviceCareProcessFunctions();

            Reporting.Debug("Open DeviceCare");
            return(deviceCareProcessFunctions.Run());
        }
Exemple #9
0
        /// <summary>
        /// The run.
        /// </summary>
        /// <param name="projectName">
        /// The project name.
        /// </param>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public bool Run(string projectName)
        {
            Logging.Enter(typeof(CreateProject), MethodBase.GetCurrentMethod().Name);
            bool result = Project.CreateAutomatically();

            result &= Functions.StatusArea.StatusBar.Validation.ProgressIndicator.WaitUntilProgressIndicatorBecomesAvailable();
            result &= Functions.StatusArea.StatusBar.Validation.ProgressIndicator.WaitUntilProgressIndicatorBecomesNotAvailable();
            result &= Functions.ApplicationArea.MainView.Validation.Project.IsProjectCreated();
            return(result);
        }
        /// <summary>
        /// The run.
        /// </summary>
        /// <param name="parent">
        /// The parent.
        /// </param>
        /// <param name="device">
        /// The device.
        /// </param>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public bool Run(string parent, string device)
        {
            /*
             * Function not supported by DC
             * Method reports warning message and returns with false
             */

            Logging.Enter(this, MethodBase.GetCurrentMethod().Name);
            Reporting.Info("Function Add Device is not supported by Host Application: DeviceCare");
            return(false);
        }
Exemple #11
0
        /// <summary>
        /// The run.
        /// </summary>
        /// <param name="path">
        /// The path.
        /// </param>
        /// <param name="timeOutInMilliseconds">
        /// The time out in milliseconds.
        /// </param>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public bool Run(string path, int timeOutInMilliseconds)
        {
            Logging.Enter(this, MethodBase.GetCurrentMethod().Name);

            var deviceCareProcessFunctions = new DeviceCareProcessFunctions();

            Reporting.Debug("Open DeviceCare");
            int processId = deviceCareProcessFunctions.Run(path, timeOutInMilliseconds);

            return(HostApplication.IsHostApplicationOpen(processId));
        }
        /// <summary>
        /// The is progress indicator visible.
        /// </summary>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        private static bool IsProgressIndicatorVisible()
        {
            Logging.Enter(typeof(ProgressIndicator), MethodBase.GetCurrentMethod().Name);
            DeviceCareApplication repo = DeviceCareApplication.Instance;

            if (repo.StatusArea.ProgressIndicator.Visible)
            {
                return(true);
            }

            return(false);
        }
        /// <summary>
        /// The show progress.
        /// </summary>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public static string OpenShowProgress()
        {
            Logging.Enter(typeof(ProgramFunctions), MethodBase.GetCurrentMethod().Name);

            DeviceCareApplication repo = DeviceCareApplication.Instance;

            if (RunAdditionalFunctions())
            {
                repo.MenuArea.MainMenu.ProgramFunctionsMenuItems.ShowProgressInfo.WaitForExists(Common.DefaultValues.GeneralTimeout);
                MenuItem showProgress;
                Host.Local.TryFindSingle(repo.MenuArea.MainMenu.ProgramFunctionsMenuItems.ShowProgressInfo.AbsolutePath, out showProgress);

                IList <TabPage> tabPagesBefore = Host.Local.Find <TabPage>(repo.ApplicationArea.ModuleSelection.ModuleTabPagesInfo.AbsolutePath);

                if (showProgress != null && showProgress.Visible)
                {
                    showProgress.Click();
                    Reporting.Debug("Menu item Show Progress found and clicked.");

                    IList <TabPage> tabPagesAfter = Host.Local.Find <TabPage>(repo.ApplicationArea.ModuleSelection.ModuleTabPagesInfo.AbsolutePath);
                    foreach (var tabPageAfter in tabPagesAfter)
                    {
                        Text textAfter = tabPageAfter.FindSingle("text");
                        if (textAfter != null)
                        {
                            string textValueAfter = textAfter.Element.GetAttributeValueText("caption");
                            if (textValueAfter != null)
                            {
                                foreach (var tabPageBefore in tabPagesBefore)
                                {
                                    Text textBefore = tabPageBefore.FindSingle("text");
                                    if (textBefore != null)
                                    {
                                        string textValueBefore = textBefore.Element.GetAttributeValueText("caption");
                                        if (textValueBefore != null)
                                        {
                                            if (!textValueBefore.Equals(textValueAfter))
                                            {
                                                Reporting.Debug(string.Format("Name of currently opened function is {0}", textValueAfter));
                                                return(textValueAfter);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }

            Reporting.Error("Could not access menu item Show Progress.");
            return(string.Empty);
        }
Exemple #14
0
        /// <summary>
        /// The run.
        /// </summary>
        /// <returns>
        /// The <see cref="string"/>.
        /// </returns>
        public string Run()
        {
            Logging.Enter(typeof(GetDtmContainerPath), MethodBase.GetCurrentMethod().Name);

            try
            {
                return(new Functions.ApplicationArea.MainView.Execution.GetDtmContainerPath().Run());
            }
            catch (Exception exception)
            {
                Reporting.Error(exception.Message);
                return(null);
            }
        }
        /// <summary>
        ///     Gets the path of the DTM Container(mdi client) from the DTMContainer repository of the actually used frame
        /// </summary>
        /// <returns>
        ///     string: with the absolute path of the DTM Container
        ///     null: if an error occurred
        /// </returns>
        public string Run()
        {
            Logging.Enter(typeof(GetDtmContainerPath), MethodBase.GetCurrentMethod().Name);

            try
            {
                return(this.repo.ApplicationArea.DTMContainerInfo.AbsolutePath.ToString());
            }
            catch (Exception exception)
            {
                Log.Error(exception.Message);
                return(null);
            }
        }
Exemple #16
0
        /// <summary>
        /// The is device connected.
        /// </summary>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public static bool IsDeviceConnected()
        {
            Logging.Enter(typeof(Connection), MethodBase.GetCurrentMethod().Name);
            DeviceCareApplication repo = DeviceCareApplication.Instance;

            if (!repo.StatusArea.ConnectionIndicatorInfo.Exists())
            {
                Reporting.Debug("There is no device connected.");
                return(false);
            }

            Reporting.Debug("A device is connected.");
            return(true);
        }
        /// <summary>
        /// The run.
        /// </summary>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public string Run()
        {
            Logging.Enter(typeof(GetHostApplicationLanguage), MethodBase.GetCurrentMethod().Name);
            Reporting.Debug("Getting DeviceCare language from application config file.");

            const string EnvironmentVariable = "APPDATA";
            string       path = Environment.GetEnvironmentVariable(EnvironmentVariable);

            path = path + "\\..\\Local\\Endress+Hauser\\DeviceCare SFE100\\Shared\\Application.config";
            string languageCulture = string.Empty;

            if (!string.IsNullOrEmpty(path))
            {
                XmlDocument applicationConfiguration = new XmlDocument();
                applicationConfiguration.Load(path);
                XmlNodeList nodes = applicationConfiguration.SelectNodes("/config/settings/culture/name");
                if (nodes != null)
                {
                    foreach (XmlNode node in nodes)
                    {
                        languageCulture = node.InnerText;
                    }
                }
            }

            switch (languageCulture)
            {
            case "en-US":
                return("English");

            case "fr-FR":
                return("French");

            case "de-DE":
                return("German");

            case "it-IT":
                return("Italian");

            case "es-ES":
                return("Spanish");

            default:
                Reporting.Error(string.Format("Language culture {0}  is not supported", languageCulture));
                return(string.Empty);
            }
        }
        /// <summary>
        /// The create by assistant.
        /// </summary>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public static bool CloseEventLog()
        {
            Logging.Enter(typeof(EventLog), MethodBase.GetCurrentMethod().Name);

            DeviceCareApplication repo = DeviceCareApplication.Instance;

            if (!repo.Dialog.EventLog.CloseInfo.Exists())
            {
                Reporting.Error("Button Close is not available. Event Log cannot be closed.");
                return(false);
            }

            Reporting.Debug("Button Close is available.");
            Reporting.Debug("Close Event Log Dialog");
            repo.Dialog.EventLog.Close.Click();
            return(true);
        }
        /// <summary>
        /// The create automatically.
        /// </summary>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public static bool OpenEventLog()
        {
            Logging.Enter(typeof(EventLog), MethodBase.GetCurrentMethod().Name);

            DeviceCareApplication repo = new DeviceCareApplication();

            if (!repo.StatusArea.StatusBarInfo.Exists())
            {
                Reporting.Error("Element Status Bar is not available. Event Log cannot be opened.");
                return(false);
            }

            Reporting.Debug("Status Bar is available.");
            Reporting.Debug("Open Event Log Dialog");
            repo.StatusArea.StatusBar.Click();
            return(true);
        }
Exemple #20
0
        ///// <summary>
        ///// The wait until status message becomes not available.
        ///// </summary>
        ///// <returns>
        ///// The <see cref="bool"/>.
        ///// </returns>
        //public static bool WaitUntilStatusMessageBecomesNotAvailable()
        //{
        //    Logging.Enter(typeof(ProgressIndicator), MethodBase.GetCurrentMethod().Name);

        //    try
        //    {
        //        Stopwatch stopwatch = new Stopwatch();
        //        stopwatch.Start();

        //        Reporting.Debug("Wait until Message  becomes not visible.");
        //        while (stopwatch.ElapsedMilliseconds < Common.DefaultValues.GeneralTimeout)
        //        {
        //            if (!IsProgressIndicatorVisible())
        //            {
        //                Reporting.Debug("Progress Indicator is not visible.");
        //                return true;
        //            }
        //        }

        //        Reporting.Error(string.Format("Progress Indicator is still visible after {0} miliseconds.", Common.DefaultValues.GeneralTimeout));
        //        return false;
        //    }
        //    catch (Exception exception)
        //    {
        //        Reporting.Error(exception.Message);
        //        return false;
        //    }
        //}

        /// <summary>
        /// The is progress indicator visible.
        /// </summary>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        private static bool IsStatusMessageAvailable()
        {
            Logging.Enter(typeof(ProgressIndicator), MethodBase.GetCurrentMethod().Name);
            DeviceCareApplication repo = DeviceCareApplication.Instance;

            if (repo.StatusArea.StatusBarTextInfo.Exists())
            {
                if (repo.StatusArea.StatusBarText.ScreenRectangle.Height > 0 && repo.StatusArea.StatusBarText.ScreenRectangle.Width > 0)
                {
                    return(true);
                }

                return(false);
            }

            return(false);
        }
Exemple #21
0
 /// <summary>
 /// The is menu item available.
 /// </summary>
 /// <returns>
 /// The <see cref="bool"/>.
 /// </returns>
 public static bool IsMenuItemAvailable()
 {
     Logging.Enter(typeof(DtmFunctions), MethodBase.GetCurrentMethod().Name);
     try
     {
         DeviceCareApplication repo = DeviceCareApplication.Instance;
         repo.MenuArea.MainMenu.DTMFunctionMenuItems.OnlineParameterizationInfo.WaitForExists(Common.DefaultValues.GeneralTimeout);
         Reporting.Debug("Menu Items of menu DTM Function are available.");
         return(true);
     }
     catch (Exception exception)
     {
         Reporting.Error("Menu Items of menu DTM Function are not available.");
         Reporting.Error(exception.Message);
         return(false);
     }
 }
        /// <summary>
        /// The create automatically.
        /// </summary>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public static bool IsEventLogClosed()
        {
            try
            {
                Logging.Enter(typeof(EventLog), MethodBase.GetCurrentMethod().Name);

                DeviceCareApplication repo = new DeviceCareApplication();
                repo.Dialog.EventLog.CloseInfo.WaitForNotExists(Common.DefaultValues.GeneralTimeout);
                Reporting.Debug("Event Log Dialog is not available.");
                return(true);
            }
            catch (Exception exception)
            {
                Reporting.Error("Event Log Dialog is still available.");
                Reporting.Error(exception.Message);
                return(false);
            }
        }
        /// <summary>
        /// The open program functions.
        /// </summary>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public static bool OpenMenu()
        {
            Logging.Enter(typeof(ProgramFunctions), MethodBase.GetCurrentMethod().Name);

            DeviceCareApplication repo = DeviceCareApplication.Instance;
            MenuItem menuItem;

            Host.Local.TryFindSingle(repo.MenuArea.MainMenu.ProgramFunctionsInfo.AbsolutePath, out menuItem);
            if (menuItem != null && menuItem.Visible)
            {
                menuItem.Click();
                Reporting.Debug("Menu item Program Functions found and clicked.");
                return(true);
            }

            Reporting.Error("Could not access menu Program Functions.");
            return(false);
        }
        /// <summary>
        /// The open program functions.
        /// </summary>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public static bool IsMenuAvailable()
        {
            Logging.Enter(typeof(DeviceReport), MethodBase.GetCurrentMethod().Name);

            DeviceCareApplication repo = DeviceCareApplication.Instance;

            repo.MenuArea.MainMenu.DeviceReportInfo.WaitForExists(Common.DefaultValues.GeneralTimeout);
            if (repo.MenuArea.MainMenu.DeviceReportInfo.Exists())
            {
                if (repo.MenuArea.MainMenu.DeviceReport != null && repo.MenuArea.MainMenu.DeviceReport.Visible)
                {
                    Reporting.Debug("Menu item Device Report is available.");
                    return(true);
                }
            }

            Reporting.Debug("Menu item Device Report is not available.");
            return(false);
        }
        /// <summary>
        /// The get all messages from event log.
        /// </summary>
        /// <returns>
        /// The <see cref="List{T}"/>.
        /// </returns>
        public static List <string> GetAllMessagesFromEventLog()
        {
            Logging.Enter(typeof(EventLog), MethodBase.GetCurrentMethod().Name);

            List <string>         messages = new List <string>();
            DeviceCareApplication repo     = new DeviceCareApplication();

            if (Validation.EventLog.IsEventLogTableAvailable())
            {
                IList <Ranorex.Row> rows = repo.Dialog.EventLog.Table.Rows;
                Reporting.Debug("Scan Event Log Table for messages");
                foreach (var row in rows)
                {
                    messages.Add(row.Cells[2].Text);
                }
            }

            return(messages);
        }
        /// <summary>
        /// The restore device data.
        /// </summary>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public static bool RunRestoreDeviceData()
        {
            Logging.Enter(typeof(ProgramFunctions), MethodBase.GetCurrentMethod().Name);

            if (OpenMenu())
            {
                DeviceCareApplication repo = DeviceCareApplication.Instance;
                MenuItem menuItem;
                Host.Local.TryFindSingle(repo.MenuArea.MainMenu.ProgramFunctionsMenuItems.RestoreDeviceDataInfo.AbsolutePath, out menuItem);
                if (menuItem != null && menuItem.Visible)
                {
                    menuItem.MoveTo();
                    Reporting.Debug("Menu item Restore Device Data found and moved to.");
                    return(true);
                }
            }

            Reporting.Error("Could not access menu item Restore Device Data.");
            return(false);
        }
        /// <summary>
        /// The run.
        /// </summary>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public bool Run()
        {
            Logging.Enter(this, MethodBase.GetCurrentMethod().Name);

            if (Functions.ApplicationArea.MainView.Validation.HostApplication.WaitUntilHostApplicationOpened())
            {
                if (HostApplication.CloseHostApplication())
                {
                    if (Functions.ApplicationArea.MainView.Validation.HostApplication.WaitUntilHostApplicationClosed())
                    {
                        Reporting.Debug("Closing DeviceCare was successful.");
                        return(true);
                    }
                }
            }

            Reporting.Error(LogInfo.Namespace(MethodBase.GetCurrentMethod()), "Closing DeviceCare was not successful.");
            Reporting.Error(LogInfo.Namespace(MethodBase.GetCurrentMethod()), "DeviceCare process is still running.");
            return(false);
        }
        /// <summary>
        /// The close tab page.
        /// </summary>
        /// <param name="functionName">
        /// The function name.
        /// </param>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        private static bool CloseTabPage(string functionName)
        {
            Logging.Enter(typeof(DtmFunctions), MethodBase.GetCurrentMethod().Name);

            DeviceCareApplication repo = DeviceCareApplication.Instance;
            Button button;
            string path = repo.ApplicationArea.ModuleSelection.ModuleCloseButtonInfo.AbsolutePath.ToString();

            path = path.Replace("MODULENAME", functionName);
            RxPath ranorexPath = path;

            Host.Local.TryFindSingle(ranorexPath, out button);
            if (button != null)
            {
                button.Press();
                Reporting.Debug(string.Format("Module {0} close button found and pressed.", functionName));
                return(true);
            }

            Reporting.Error(string.Format("Could not access module {0} close button.", functionName));
            return(false);
        }
        /// <summary>
        /// The select dtm functions.
        /// </summary>
        /// <param name="functionName">
        /// The function name.
        /// </param>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public static bool SelectDtmFunctions(string functionName)
        {
            Logging.Enter(typeof(DtmFunctions), MethodBase.GetCurrentMethod().Name);

            DeviceCareApplication repo = DeviceCareApplication.Instance;
            TabPage tabPage;
            string  path = repo.ApplicationArea.ModuleSelection.ModuleTabPageInfo.AbsolutePath.ToString();

            path = path.Replace("MODULENAME", functionName);
            RxPath ranorexPath = path;

            Host.Local.TryFindSingle(ranorexPath, out tabPage);
            if (tabPage != null)
            {
                tabPage.Select();
                Reporting.Debug(string.Format("Module {0} found and selected.", functionName));
                return(true);
            }

            Reporting.Error(string.Format("Could not find module {0} to select.", functionName));
            return(false);
        }
        /// <summary>
        /// The restore device data browse.
        /// </summary>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public static bool OpenRestoreDeviceDataBrowse()
        {
            Logging.Enter(typeof(ProgramFunctions), MethodBase.GetCurrentMethod().Name);

            // DeviceCareApplication repo = DeviceCareApplication.Instance;
            // if (RestoreDeviceData())
            // {
            //    repo.MenuArea.MainMenu.ProgramFunctionsMenuItems.RestoreBrowseInfo.WaitForExists(Common.DefaultValues.GeneralTimeout);
            //    MenuItem restoreDeviceDataBrowse;
            //    Host.Local.TryFindSingle(repo.MenuArea.MainMenu.ProgramFunctionsMenuItems.RestoreBrowseInfo.AbsolutePath, out restoreDeviceDataBrowse);
            //    if (restoreDeviceDataBrowse != null && restoreDeviceDataBrowse.Visible)
            //    {
            //        restoreDeviceDataBrowse.Click();
            //        Reporting.Error("Menu item Device Data Browse found and clicked.");
            //        return true;
            //    }
            // }

            // Reporting.Error("Could not access menu item Restore Device Data Browse.");
            Reporting.Error("Not Implemented Yet");
            return(false);
        }