Класс, предоставляющий методы для общих целей.
示例#1
0
        private void WrkChkApp_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            try
            {
                // Проверим статус проверки...
                if (e.Error == null)
                {
                    // Проверим наличие обновлений для приложения...
                    if (UpMan.CheckAppUpdate())
                    {
                        UpdAppImg.Image = Properties.Resources.upd_av; UpdAppStatus.Text = String.Format(AppStrings.UPD_AppUpdateAvail, UpMan.AppUpdateVersion);
                    }
                    else
                    {
                        UpdAppImg.Image = Properties.Resources.upd_nx; UpdAppStatus.Text = AppStrings.UPD_AppNoUpdates; UpdateTimeSetApp();
                    }

                    // Проверим наличие обновлений для базы игр...
                    if (UpMan.CheckGameDBUpdate())
                    {
                        UpdDBImg.Image = Properties.Resources.upd_av; UpdDBStatus.Text = String.Format(AppStrings.UPD_DbUpdateAvail, UpMan.GameUpdateHash.Substring(0, 7));
                    }
                    else
                    {
                        UpdDBImg.Image = Properties.Resources.upd_nx; UpdDBStatus.Text = AppStrings.UPD_DbNoUpdates;
                    }

                    // Проверим наличие обновлений для базы HUD...
                    if (UpMan.CheckHUDUpdate())
                    {
                        UpdHUDDbImg.Image = Properties.Resources.upd_av; UpdHUDStatus.Text = String.Format(AppStrings.UPD_HUDUpdateAvail, UpMan.HUDUpdateHash.Substring(0, 7));
                    }
                    else
                    {
                        UpdHUDDbImg.Image = Properties.Resources.upd_nx; UpdHUDStatus.Text = AppStrings.UPD_HUDNoUpdates; UpdateTimeSetHUD();
                    }
                }
                else
                {
                    // Произошла ошибка...
                    UpdAppImg.Image   = Properties.Resources.upd_err;
                    UpdAppStatus.Text = AppStrings.UPD_AppCheckFailure;
                    UpdDBImg.Image    = Properties.Resources.upd_err;
                    UpdDBStatus.Text  = AppStrings.UPD_DbCheckFailure;
                    UpdHUDDbImg.Image = Properties.Resources.upd_err;
                    UpdHUDStatus.Text = AppStrings.UPD_HUDCheckFailure;

                    // Запишем в журнал...
                    CoreLib.WriteStringToLog(e.Error.Message);
                }
            }
            catch (Exception Ex)
            {
                CoreLib.WriteStringToLog(Ex.Message);
            }
        }
示例#2
0
 /// <summary>
 /// Метод, срабатывающий по окончании работы механизма удаления файлов
 /// в отдельном потоке.
 /// </summary>
 private void RW_Wrk_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
 {
     // Удаление завершено. Закроем форму...
     IsRunning = false;
     if (e.Error != null)
     {
         CoreLib.HandleExceptionEx(AppStrings.RW_RmException, Properties.Resources.AppName, e.Error.Message, e.Error.Source, MessageBoxIcon.Warning);
     }
     Close();
 }
示例#3
0
 /// <summary>
 /// Метод, срабатывающий при нажатии на кнопку "Копировать".
 /// </summary>
 private void HEd_T_Copy_Click(object sender, EventArgs e)
 {
     try
     {
         if (HEd_Table.Rows[HEd_Table.CurrentRow.Index].Cells[HEd_Table.CurrentCell.ColumnIndex].Value != null)
         {
             Clipboard.SetText(HEd_Table.Rows[HEd_Table.CurrentRow.Index].Cells[HEd_Table.CurrentCell.ColumnIndex].Value.ToString());
         }
     }
     catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
 }
示例#4
0
        /// <summary>
        /// Устанавливает обновление в виде отдельного исполняемого файла.
        /// </summary>
        /// <param name="UpdateURL">URL загрузки обновления</param>
        /// <param name="UpdateHash">Контрольная сумма файла обновления</param>
        /// <returns>Возвращает true при успешной установке обновления, иначе - false.</returns>
        private bool InstallBinaryUpdate(string UpdateURL, string UpdateHash)
        {
            // Задаём значения переменных по умолчанию...
            bool Result = false;

            // Генерируем имя файла обновления...
            string UpdateFileName = UpdateManager.GenerateUpdateFileName(Path.Combine(AppUserDir, Path.GetFileName(UpdateURL)));

            // Загружаем файл асинхронно...
            FormManager.FormShowDownloader(UpMan.AppUpdateURL, UpdateFileName);

            // Выполняем проверки и устанавливаем обновление...
            if (File.Exists(UpdateFileName))
            {
                // Проверяем хеш загруженного файла с эталоном...
                if (FileManager.CalculateFileMD5(UpdateFileName) == UpdateHash)
                {
                    // Обновляем дату последней проверки обновлений...
                    UpdateTimeSetApp();

                    // Выводим сообщение об успешном окончании загрузки и готовности к установке обновления...
                    MessageBox.Show(AppStrings.UPD_UpdateSuccessful, Properties.Resources.AppName, MessageBoxButtons.OK, MessageBoxIcon.Information);

                    // Запускаем установку standalone-обновления...
                    try { if (FileManager.IsDirectoryWritable(FullAppPath))
                          {
                              Process.Start(UpdateFileName);
                          }
                          else
                          {
                              ProcessManager.StartWithUAC(UpdateFileName);
                          } Result = true; } catch (Exception Ex) { CoreLib.HandleExceptionEx(AppStrings.UPD_UpdateFailure, Properties.Resources.AppName, Ex.Message, Ex.Source, MessageBoxIcon.Error); }
                }
                else
                {
                    // Хеш-сумма не совпала, поэтому файл скорее всего повреждён. Удаляем...
                    try { File.Delete(UpdateFileName); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }

                    // Выводим сообщение о несовпадении контрольной суммы...
                    MessageBox.Show(AppStrings.UPD_HashFailure, Properties.Resources.AppName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                // Не удалось загрузить файл обновления. Выводим сообщение об ошибке...
                MessageBox.Show(AppStrings.UPD_UpdateFailure, Properties.Resources.AppName, MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

            // Повторно запускаем проверку обновлений...
            CheckForUpdates();

            // Возвращаем результат...
            return(Result);
        }
示例#5
0
        /// <summary>
        /// Метод, срабатывающий при нажатии на кнопку "Очистить журнал".
        /// </summary>
        private void LV_MunuFileClearLog_Click(object sender, EventArgs e)
        {
            // Очистим форму...
            LV_LogArea.Clear();

            // Очистим файл журнала...
            try { if (File.Exists(LogFileName))
                  {
                      File.Delete(LogFileName); FileManager.CreateFile(LogFileName);
                  }
            } catch (Exception Ex) { CoreLib.HandleExceptionEx(AppStrings.LV_ClearEx, Properties.Resources.AppName, Ex.Message, Ex.Source, MessageBoxIcon.Warning); }
        }
示例#6
0
 /// <summary>
 /// Метод, срабатывающий при нажатии на кнопку перехода к Steam
 /// профилю выбранного пользователя.
 /// </summary>
 private void MM_Steam_Click(object sender, EventArgs e)
 {
     try
     {
         if (MM_Table.Rows[MM_Table.CurrentRow.Index].Cells[MM_Table.CurrentCell.ColumnIndex].Value != null)
         {
             string Value = MM_Table.Rows[MM_Table.CurrentRow.Index].Cells[MM_Table.CurrentCell.ColumnIndex].Value.ToString();
             ProcessManager.OpenWebPage(String.Format(Properties.Resources.MM_CommunityURL, Regex.IsMatch(Value, Properties.Resources.MM_SteamID32Regex) ? SteamConv.ConvSid32Sid64(Value) : SteamConv.ConvSidv3Sid64(Value)));
         }
     }
     catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
 }
示例#7
0
 /// <summary>
 /// Метод, срабатывающий при нажатии на кнопку "Удалить строку".
 /// </summary>
 private void HEd_T_RemRw_Click(object sender, EventArgs e)
 {
     try
     {
         foreach (DataGridViewCell Cell in HEd_Table.SelectedCells)
         {
             if (Cell.Selected)
             {
                 HEd_Table.Rows.RemoveAt(Cell.RowIndex);
             }
         }
     } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
 }
示例#8
0
 /// <summary>
 /// Отображает диалоговое окно менеджера быстрой очистки.
 /// </summary>
 /// <param name="Paths">Каталоги для очистки</param>
 /// <param name="Mask">Маска файлов, подлежащих очистке</param>
 /// <param name="LText">Текст заголовка</param>
 /// <param name="CheckBin">Имя бинарника, работа которого будет проверяться перед запуском очистки</param>
 /// <param name="ResultMsg">Текст сообщения, которое будет выдаваться по завершении очистки</param>
 /// <param name="BackUpDir">Каталог для сохранения резервных копий</param>
 /// <param name="ReadOnly">Пользователю будет запрещено изменять выбор удаляемых файлов</param>
 /// <param name="NoAuto">Включает / отключает автовыбор файлов флажками</param>
 /// <param name="Recursive">Включает / отключает рекурсивный обход</param>
 /// <param name="ForceBackUp">Включает / отключает принудительное создание резервных копий</param>
 public static void FormShowCleanup(List <String> Paths, string LText, string ResultMsg, string BackUpDir, string CheckBin, bool ReadOnly = false, bool NoAuto = false, bool Recursive = true, bool ForceBackUp = false)
 {
     try
     {
         if (!ProcessManager.IsProcessRunning(Path.GetFileNameWithoutExtension(CheckBin)))
         {
             using (FrmCleaner FCl = new FrmCleaner(Paths, BackUpDir, LText, ResultMsg, ReadOnly, NoAuto, Recursive, ForceBackUp)) { FCl.ShowDialog(); }
         }
         else
         {
             MessageBox.Show(String.Format(AppStrings.PS_AppRunning, CheckBin), Properties.Resources.AppName, MessageBoxButtons.OK, MessageBoxIcon.Warning);
         }
     }
     catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
 }
示例#9
0
 /// <summary>
 /// Метод, срабатывающий при нажатии на кнопку вставки из
 /// буфера обмена.
 /// </summary>
 private void MM_Paste_Click(object sender, EventArgs e)
 {
     try
     {
         if (Clipboard.ContainsText())
         {
             List <String> Rows = ParseRow(Clipboard.GetText());
             foreach (string Row in Rows)
             {
                 MM_Table.Rows.Add(Row);
             }
         }
     }
     catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
 }
示例#10
0
 /// <summary>
 /// Метод, срабатывающий при нажатии на кнопку сохранения.
 /// </summary>
 private void WriteTable(object sender, EventArgs e)
 {
     try
     {
         if (Properties.Settings.Default.SafeCleanup)
         {
             if (File.Exists(Banlist))
             {
                 FileManager.CreateConfigBackUp(Banlist, BackUpDir, Properties.Resources.BU_PrefixVChat);
             }
         }
         WriteTableToFile(Banlist); MessageBox.Show(AppStrings.MM_SavedOK, Properties.Resources.AppName, MessageBoxButtons.OK, MessageBoxIcon.Information);
     }
     catch (Exception Ex) { CoreLib.HandleExceptionEx(AppStrings.MM_SaveException, Properties.Resources.AppName, Ex.Message, Ex.Source, MessageBoxIcon.Warning); }
 }
示例#11
0
 /// <summary>
 /// Метод, срабатывающий при нажатии на кнопку копирования
 /// строки в буфер обмена.
 /// </summary>
 private void MM_Copy_Click(object sender, EventArgs e)
 {
     try
     {
         StringBuilder SB = new StringBuilder();
         foreach (DataGridViewCell Cell in MM_Table.SelectedCells)
         {
             if (Cell.Selected)
             {
                 SB.AppendFormat("{0} ", Cell.Value);
             }
         }
         Clipboard.SetText(SB.ToString());
     }
     catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
 }
示例#12
0
        /// <summary>
        /// Считывает из главного файла конфигурации Steam пути к дополнительным точкам монтирования.
        /// </summary>
        private List <String> GetSteamMountPoints()
        {
            // Создаём массив, в который будем помещать найденные пути...
            List <String> Result = new List <String> {
                FullSteamPath
            };

            // Начинаем чтение главного файла конфигурации...
            try
            {
                // Открываем файл как поток...
                using (StreamReader SteamConfig = new StreamReader(Path.Combine(FullSteamPath, "config", "config.vdf"), Encoding.Default))
                {
                    // Инициализируем буферную переменную...
                    string RdStr;

                    // Читаем поток построчно...
                    while (SteamConfig.Peek() >= 0)
                    {
                        // Считываем строку и сразу очищаем от лишнего...
                        RdStr = SteamConfig.ReadLine().Trim();

                        // Проверяем наличие данных в строке...
                        if (!(String.IsNullOrWhiteSpace(RdStr)))
                        {
                            // Ищем в строке путь установки...
                            if (RdStr.IndexOf("BaseInstallFolder", StringComparison.CurrentCultureIgnoreCase) != -1)
                            {
                                RdStr = CoreLib.CleanStrWx(RdStr, true, true);
                                RdStr = RdStr.Remove(0, RdStr.IndexOf(" ") + 1);
                                if (!(String.IsNullOrWhiteSpace(RdStr)))
                                {
                                    Result.Add(RdStr);
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception Ex)
            {
                CoreLib.WriteStringToLog(Ex.Message);
            }

            // Возвращаем сформированный массив...
            return(Result);
        }
示例#13
0
 /// <summary>
 /// Метод, срабатывающий при нажатии кнопки отмены произведённых изменений.
 /// </summary>
 private void Dis_Restore_Click(object sender, EventArgs e)
 {
     // Восстанавливаем настройки по умолчанию...
     if (MessageBox.Show(AppStrings.KB_ExRestore, Properties.Resources.AppName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
     {
         try
         {
             DeleteKBS("Scancode Map");
             MessageBox.Show(AppStrings.KB_ExSuccess, Properties.Resources.AppName, MessageBoxButtons.OK, MessageBoxIcon.Information);
             Close();
         }
         catch (Exception Ex)
         {
             CoreLib.HandleExceptionEx(AppStrings.KB_ExException, Properties.Resources.AppName, Ex.Message, Ex.Source, MessageBoxIcon.Warning);
         }
     }
 }
示例#14
0
        /// <summary>
        /// Метод, срабатывающий по окончании работы механизма очистки в отдельном потоке.
        /// </summary>
        private void ClnWrk_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (e.Error == null)
            {
                // Выводим сообщение об успешном окончании очистки...
                CM_Info.Text = AppStrings.PS_ProgressFinished;
                MessageBox.Show(SuccessMessage, Properties.Resources.AppName, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                // В случае исключений пишем в отладочный лог...
                CoreLib.WriteStringToLog(e.Error.Message);
            }

            // Закрываем форму...
            Close();
        }
示例#15
0
 /// <summary>
 /// Сохраняет содержимое редактора на форме в файл Hosts.
 /// </summary>
 /// <param name="Path">Путь к файлу Hosts</param>
 private void WriteTableToHosts(string Path)
 {
     using (StreamWriter CFile = new StreamWriter(Path, false, Encoding.Default))
     {
         try { CFile.WriteLine(CoreLib.GetTemplateFromResource(Properties.Resources.AHE_TemplateFile)); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
         foreach (DataGridViewRow Row in HEd_Table.Rows)
         {
             if ((Row.Cells[0].Value != null) && (Row.Cells[1].Value != null))
             {
                 if (IPAddress.TryParse(Row.Cells[0].Value.ToString(), out IPAddress IPAddr))
                 {
                     CFile.WriteLine("{0} {1}", IPAddr, Row.Cells[1].Value);
                 }
             }
         }
     }
 }
示例#16
0
 /// <summary>
 /// Метод, срабатывающий при нажатии кнопки отключения обеих клавиш WIN.
 /// </summary>
 private void Dis_BWIN_Click(object sender, EventArgs e)
 {
     // Отключаем обе клавиши WIN...
     // 00 00 00 00 00 00 00 00 03 00 00 00 00 00 5B E0 00 00 5C E0 00 00 00 00
     if (MessageBox.Show(String.Format(AppStrings.KB_ExQuestion, ((Button)sender).Text.ToLower()), Properties.Resources.AppName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
     {
         try
         {
             WriteKBS(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 91, 224, 0, 0, 92, 224, 0, 0, 0, 0 });
             MessageBox.Show(AppStrings.KB_ExSuccess, Properties.Resources.AppName, MessageBoxButtons.OK, MessageBoxIcon.Information);
             Close();
         }
         catch (Exception Ex)
         {
             CoreLib.HandleExceptionEx(AppStrings.KB_ExException, Properties.Resources.AppName, Ex.Message, Ex.Source, MessageBoxIcon.Warning);
         }
     }
 }
示例#17
0
        /// <summary>
        /// Создаёт резервную копию конфигов, имена которых переданы в параметре.
        /// </summary>
        /// <param name="Configs">Конфиги для бэкапа</param>
        /// <param name="BackUpDir">Путь к каталогу с резервными копиями</param>
        /// <param name="Prefix">Префикс имени файла резервной копии</param>
        public static void CreateConfigBackUp(List <String> Configs, string BackUpDir, string Prefix)
        {
            // Проверяем чтобы каталог для бэкапов существовал...
            if (!(Directory.Exists(BackUpDir)))
            {
                Directory.CreateDirectory(BackUpDir);
            }

            // Проверим существование конфигов и запишем в список только имена реально существующих файлов...
            Configs = GetRealFilesFromList(Configs);

            // Копируем оригинальный файл в файл бэкапа...
            try { if (Configs.Count > 0)
                  {
                      CompressFiles(Configs, GenerateBackUpFileName(BackUpDir, Prefix));
                  }
            } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
        }
示例#18
0
        /// <summary>
        /// Метод, срабатывающий по окончании работы механизма загрузки в отдельном потоке.
        /// </summary>
        private void DownloaderCompleted(object sender, AsyncCompletedEventArgs e)
        {
            // Загрузка завершена. Проверим скачалось ли что-то. Если нет, удалим пустой файл...
            try
            {
                if (File.Exists(LocalFile))
                {
                    FileInfo Fi = new FileInfo(LocalFile);
                    if (Fi.Length == 0)
                    {
                        File.Delete(LocalFile);
                    }
                }
            }
            catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }

            // Закроем форму...
            IsRunning = false;
            Close();
        }
示例#19
0
 /// <summary>
 /// Упаковывает файлы, имена которых переданых в массиве, в Zip-архив с
 /// произвольным именем.
 /// </summary>
 /// <param name="Files">Массив с именами файлов, которые будут добавлены в архив</param>
 /// <param name="ArchiveName">Имя для создаваемого архивного файла</param>
 /// <returns>В случае успеха возвращает истину, иначе - ложь</returns>
 public static bool CompressFiles(List <String> Files, string ArchiveName)
 {
     try
     {
         using (ZipFile ZBkUp = new ZipFile(ArchiveName, Encoding.UTF8))
         {
             ZBkUp.AddFiles(Files, true, String.Empty);
             ZBkUp.Save();
         }
     }
     catch (Exception Ex)
     {
         try { if (File.Exists(ArchiveName))
               {
                   File.Delete(ArchiveName);
               }
         } catch (Exception E1) { CoreLib.WriteStringToLog(E1.Message); }
         CoreLib.WriteStringToLog(Ex.Message);
     }
     return(File.Exists(ArchiveName));
 }
示例#20
0
        /// <summary>
        /// Метод, инициирущий процесс загрузки файла из Интернета.
        /// </summary>
        private void DownloaderStart(string URI, string FileName)
        {
            try
            {
                // Проверим существование файла и удалим...
                if (File.Exists(FileName))
                {
                    File.Delete(FileName);
                }

                // Начинаем асинхронную загрузку файла...
                using (WebClient FileDownloader = new WebClient())
                {
                    FileDownloader.Headers.Add("User-Agent", Properties.Resources.AppDnlUA);
                    FileDownloader.DownloadFileCompleted   += new AsyncCompletedEventHandler(DownloaderCompleted);
                    FileDownloader.DownloadProgressChanged += new DownloadProgressChangedEventHandler(DownloaderProgressChanged);
                    FileDownloader.DownloadFileAsync(new Uri(URI), FileName);
                }
            }
            catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
        }
示例#21
0
        public static void OpenTextEditor(string FileName, CurrentPlatform.OSType OS)
        {
            try
            {
                switch (OS)
                {
                case CurrentPlatform.OSType.Windows:
                    Process.Start(Properties.Settings.Default.EditorBin, FileName);
                    break;

                case CurrentPlatform.OSType.Linux:
                    Process.Start(Properties.Resources.AppOpenHandlerLin, FileName);
                    break;

                case CurrentPlatform.OSType.MacOSX:
                    Process.Start(Properties.Resources.AppOpenHandlerMac, String.Format("{0} \"{1}\"", "-t", FileName));
                    break;
                }
            }
            catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
        }
示例#22
0
        public static void OpenExplorer(string FileName, CurrentPlatform.OSType OS)
        {
            try
            {
                switch (OS)
                {
                case CurrentPlatform.OSType.Windows:
                    Process.Start(Properties.Resources.ShBinWin, String.Format("{0} \"{1}\"", Properties.Resources.ShParamWin, FileName));
                    break;

                case CurrentPlatform.OSType.Linux:
                    Process.Start(Properties.Resources.AppOpenHandlerLin, String.Format("\"{0}\"", Path.GetDirectoryName(FileName)));
                    break;

                case CurrentPlatform.OSType.MacOSX:
                    Process.Start(Properties.Resources.AppOpenHandlerMac, String.Format("\"{0}\"", Path.GetDirectoryName(FileName)));
                    break;
                }
            }
            catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
        }
示例#23
0
 /// <summary>
 /// Метод, срабатывающий при нажатии на кнопку преобразования
 /// формата SteamID.
 /// </summary>
 private void MM_Convert_Click(object sender, EventArgs e)
 {
     try
     {
         foreach (DataGridViewCell Cell in MM_Table.SelectedCells)
         {
             string CellText = Cell.Value.ToString();
             if (Cell.Selected && Regex.IsMatch(CellText, Properties.Resources.MM_SteamID32Regex))
             {
                 Cell.Value = SteamConv.ConvSid32Sidv3(CellText);
             }
             else
             {
                 if (MM_Table.SelectedCells.Count == 1)
                 {
                     MessageBox.Show(AppStrings.MM_ConvRest, Properties.Resources.AppName, MessageBoxButtons.OK, MessageBoxIcon.Warning);
                 }
             }
         }
     }
     catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
 }
示例#24
0
        /// <summary>
        /// Главный конструктор класса GameManager.
        /// </summary>
        /// <param name="App">Экземпляр класса с параметрами приложения</param>
        public GameManager(CurrentApp App)
        {
            // Создаём объекты для хранения базы игр...
            SourceGames    = new List <SourceGame>();
            InstalledGames = new List <String>();

            // При использовании нового метода поиска установленных игр, считаем их из конфига Steam...
            List <String> GameDirs = App.SteamClient.FormatInstallDirs(App.Platform.SteamAppsFolderName);

            // Создаём поток с XML-файлом...
            using (FileStream XMLFS = new FileStream(Path.Combine(App.FullAppPath, Properties.Resources.GameListFile), FileMode.Open, FileAccess.Read))
            {
                // Создаём объект документа XML...
                XmlDocument XMLD = new XmlDocument();

                // Загружаем поток в объект XML документа...
                XMLD.Load(XMLFS);

                // Обходим полученный список в цикле...
                XmlNodeList XMLNode = XMLD.GetElementsByTagName("Game");
                for (int i = 0; i < XMLNode.Count; i++)
                {
                    try
                    {
                        if (XMLD.GetElementsByTagName("Enabled")[i].InnerText == "1" || !Properties.Settings.Default.HideUnsupportedGames)
                        {
                            SourceGame SG = new SourceGame(XMLNode[i].Attributes["Name"].Value, XMLD.GetElementsByTagName("DirName")[i].InnerText, XMLD.GetElementsByTagName("SmallName")[i].InnerText, XMLD.GetElementsByTagName("Executable")[i].InnerText, XMLD.GetElementsByTagName("SID")[i].InnerText, XMLD.GetElementsByTagName("SVer")[i].InnerText, XMLD.GetElementsByTagName("VFDir")[i].InnerText, App.Platform.OS == CurrentPlatform.OSType.Windows ? XMLD.GetElementsByTagName("HasVF")[i].InnerText == "1" : true, XMLD.GetElementsByTagName("UserDir")[i].InnerText == "1", XMLD.GetElementsByTagName("HUDsAvail")[i].InnerText == "1", App.FullAppPath, App.AppUserDir, App.SteamClient.FullSteamPath, App.Platform.SteamAppsFolderName, App.SteamClient.SteamID, GameDirs);
                            if (SG.IsInstalled)
                            {
                                SourceGames.Add(SG);
                                InstalledGames.Add(SG.FullAppName);
                            }
                        }
                    }
                    catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
                }
            }
        }
示例#25
0
        /// <summary>
        /// Метод, срабатывающий по окончании работы механизма поиска кандидатов
        /// на удаление в отдельном потоке.
        /// </summary>
        private void GttWrk_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            // Указываем сколько МБ освободится при удалении всех файлов...
            CM_Info.Text = String.Format(AppStrings.PS_FrFInfo, CoreLib.SclBytes(TotalSize));

            // Проверим есть ли кандидаты для удаления (очистки)...
            if (CM_FTable.Items.Count == 0)
            {
                // Выдадим сообщение если очищать нечего...
                MessageBox.Show(AppStrings.PS_LoadErr, Properties.Resources.AppName, MessageBoxButtons.OK, MessageBoxIcon.Warning);

                // Отключим кнопку запуска очистки...
                CM_Clean.Enabled = false;

                // Закроем форму.
                Close();
            }
            else
            {
                // Включаем кнопку очистки...
                CM_Clean.Enabled = true;
            }
        }
示例#26
0
 /// <summary>
 /// Метод, информирующий основную форму о прогрессе загрузки файлов, который
 /// выполняется в отдельном потоке.
 /// </summary>
 private void DownloaderProgressChanged(object sender, DownloadProgressChangedEventArgs e)
 {
     // Отрисовываем статус в прогресс-баре...
     try { DN_PrgBr.Value = e.ProgressPercentage; } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
 }
示例#27
0
 public static void OpenWebPage(string URI)
 {
     try { Process.Start(URI); } catch (Exception Ex) { CoreLib.WriteStringToLog(Ex.Message); }
 }
示例#28
0
 /// <summary>
 /// Метод, срабатывающий при нажатии на кнопку обновления таблицы.
 /// </summary>
 private void UpdateTable(object sender, EventArgs e)
 {
     try { MM_Table.Rows.Clear(); ReadFileToTable(Banlist); } catch (Exception Ex) { CoreLib.HandleExceptionEx(AppStrings.MM_ExceptionDetected, Properties.Resources.AppName, Ex.Message, Ex.Source, MessageBoxIcon.Warning); }
 }
示例#29
0
 /// <summary>
 /// Метод, срабатывающий при нажатии на кнопку "Обновить".
 /// </summary>
 private void HEd_T_Refresh_Click(object sender, EventArgs e)
 {
     try { ReadHostsToTable(HostsFilePath); } catch (Exception Ex) { CoreLib.HandleExceptionEx(String.Format(AppStrings.AHE_ExceptionDetected, HostsFilePath), PluginName, Ex.Message, Ex.Source, MessageBoxIcon.Warning); }
 }
示例#30
0
 /// <summary>
 /// Начинает процесс сохранения таблицы в файл.
 /// </summary>
 private void SaveToFile()
 {
     if (ProcessManager.IsCurrentUserAdmin())
     {
         try { WriteTableToHosts(HostsFilePath); MessageBox.Show(AppStrings.AHE_Saved, PluginName, MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception Ex) { CoreLib.HandleExceptionEx(String.Format(AppStrings.AHE_SaveException, HostsFilePath), PluginName, Ex.Message, Ex.Source, MessageBoxIcon.Warning); }
     }
     else
     {
         MessageBox.Show(String.Format(AppStrings.AHE_NoAdminRights, HostsFilePath), PluginName, MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }