Merge pull request #11 from EpicMorg/develop
This commit is contained in:
STAM 2020-03-19 18:31:20 +03:00 committed by GitHub
commit e05e1199be
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
112 changed files with 29164 additions and 1 deletions

View File

@ -1,6 +1,6 @@
# UniversalValveToolbox
# [![AppVeyor](https://img.shields.io/appveyor/ci/stamepicmorg/universalvalvetoolbox?style=flat-square)](https://ci.appveyor.com/project/stamepicmorg/universalvalvetoolbox) [![Size](https://img.shields.io/github/repo-size/EpicMorg/UniversalValveToolbox?label=size&style=flat-square)](https://github.com/EpicMorg/UniversalValveToolbox/archive/master.zip) [![Release](https://img.shields.io/github/v/release/EpicMorg/UniversalValveToolbox?style=flat-square)](https://github.com/EpicMorg/UniversalValveToolbox/releases) [![GitHub license](https://img.shields.io/github/license/EpicMorg/UniversalValveToolbox.svg?style=popout-square)](LICENSE.md) [![Changelog](https://img.shields.io/badge/Changelog-yellow.svg?style=popout-square)](CHANGELOG.md) [![Activity](https://img.shields.io/github/commit-activity/w/EpicMorg/UniversalValveToolbox?&style=flat-square)](https://github.com/EpicMorg/UniversalValveToolbox/commits) [![GitHub issues](https://img.shields.io/github/issues/EpicMorg/UniversalValveToolbox.svg?style=popout-square)](https://github.com/EpicMorg/UniversalValveToolbox/issues) [![GitHub forks](https://img.shields.io/github/forks/EpicMorg/UniversalValveToolbox.svg?style=popout-square)](https://github.com/EpicMorg/UniversalValveToolbox/network) [![GitHub stars](https://img.shields.io/github/stars/EpicMorg/UniversalValveToolbox.svg?style=popout-square)](https://github.com/EpicMorg/UniversalValveToolbox/stargazers) [![GitHub uses](https://img.shields.io/sourcegraph/rrc/github.com/EpicMorg/UniversalValveToolbox?style=flat-square)](https://github.com/EpicMorg/UniversalValveToolbox/pulse) [![CodeScene Code Health](https://codescene.io/projects/6852/status-badges/code-health)](https://codescene.io/projects/6852) [![CodeScene System Mastery](https://codescene.io/projects/6852/status-badges/system-mastery)](https://codescene.io/projects/6852)
# [![AppVeyor](https://img.shields.io/appveyor/ci/stamepicmorg/universalvalvetoolbox?style=flat-square)](https://ci.appveyor.com/project/stamepicmorg/universalvalvetoolbox) [![Translation status](https://translate.epicm.org/widgets/universalvalvetoolbox/-/svg-badge.svg)](https://translate.epicm.org/engage/universalvalvetoolbox/?utm_source=widget) [![Size](https://img.shields.io/github/repo-size/EpicMorg/UniversalValveToolbox?label=size&style=flat-square)](https://github.com/EpicMorg/UniversalValveToolbox/archive/master.zip) [![Release](https://img.shields.io/github/v/release/EpicMorg/UniversalValveToolbox?style=flat-square)](https://github.com/EpicMorg/UniversalValveToolbox/releases) [![GitHub license](https://img.shields.io/github/license/EpicMorg/UniversalValveToolbox.svg?style=popout-square)](LICENSE.md) [![Changelog](https://img.shields.io/badge/Changelog-yellow.svg?style=popout-square)](CHANGELOG.md) [![Activity](https://img.shields.io/github/commit-activity/w/EpicMorg/UniversalValveToolbox?&style=flat-square)](https://github.com/EpicMorg/UniversalValveToolbox/commits) [![GitHub issues](https://img.shields.io/github/issues/EpicMorg/UniversalValveToolbox.svg?style=popout-square)](https://github.com/EpicMorg/UniversalValveToolbox/issues) [![GitHub forks](https://img.shields.io/github/forks/EpicMorg/UniversalValveToolbox.svg?style=popout-square)](https://github.com/EpicMorg/UniversalValveToolbox/network) [![GitHub stars](https://img.shields.io/github/stars/EpicMorg/UniversalValveToolbox.svg?style=popout-square)](https://github.com/EpicMorg/UniversalValveToolbox/stargazers) [![GitHub uses](https://img.shields.io/sourcegraph/rrc/github.com/EpicMorg/UniversalValveToolbox?style=flat-square)](https://github.com/EpicMorg/UniversalValveToolbox/pulse) [![CodeScene Code Health](https://codescene.io/projects/6852/status-badges/code-health)](https://codescene.io/projects/6852) [![CodeScene System Mastery](https://codescene.io/projects/6852/status-badges/system-mastery)](https://codescene.io/projects/6852)
[![](https://codescene.io/projects/6852/status.svg)](https://codescene.io/projects/6852/jobs/latest-successful/results)

11
docs/categories.md Normal file
View File

@ -0,0 +1,11 @@
- catAddons
- catCompileDecpmpile
- catContent
- catDocs
- catLandscape
- catMisc
- catSettings
- catTextures
- catTools
- catUtils
- catWebLinks

View File

@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29521.150
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniversalValveToolbox", "UniversalValveToolbox\UniversalValveToolbox.csproj", "{DE66895F-7317-45D3-B5CA-292253CE086A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{DE66895F-7317-45D3-B5CA-292253CE086A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DE66895F-7317-45D3-B5CA-292253CE086A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DE66895F-7317-45D3-B5CA-292253CE086A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DE66895F-7317-45D3-B5CA-292253CE086A}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {ECD6061F-2A57-4E06-983B-650FDA9A012C}
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,31 @@
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Runtime.CompilerServices;
using System.Windows.Forms;
using Newtonsoft.Json;
namespace UniversalValveToolbox.Base {
public abstract class DtoModel : INotifyPropertyChanged {
protected bool ForceUpdateField<T>(T value, ref T field, [CallerMemberName]string name = null) {
field = value;
OnPropertyChanged(name);
return true;
}
protected bool UpdateField<T>(T value, ref T field, [CallerMemberName]string name = null) {
var updated = !EqualityComparer<T>.Default.Equals(value, field);
if (updated) {
field = value;
OnPropertyChanged(name);
}
return updated;
}
protected void OnPropertyChanged([CallerMemberName]string name = null) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
public event PropertyChangedEventHandler PropertyChanged;
}
}

View File

@ -0,0 +1,47 @@
using UniversalValveToolbox.Base;
namespace UniversalValveToolbox.Model.Dto {
public class AddonDtoModel : DtoModel {
private int[] engines;
private string args;
private string bin;
private string name;
private string category;
public AddonDtoModel() {
this.engines = new int[0];
this.args = string.Empty;
this.bin = string.Empty;
this.name = string.Empty;
this.category = string.Empty;
}
public int[] Engines {
get => engines;
set => UpdateField(value, ref engines);
}
public string Name {
get => name;
set => UpdateField(value, ref name);
}
public string Category {
get => category;
set => UpdateField(value, ref category);
}
public string Bin {
get => bin;
set => UpdateField(value, ref bin);
}
public string Args {
get => args;
set => UpdateField(value, ref args);
}
public override string ToString() => name ?? string.Empty;
}
}

View File

@ -0,0 +1,32 @@
using UniversalValveToolbox.Base;
namespace UniversalValveToolbox.Model.Dto {
public class EngineDtoModel : DtoModel {
private int appid;
private string name;
private string bin;
private ToolDtoModel[] tools;
public int Appid {
get => appid;
set => UpdateField(value, ref appid);
}
public string Name {
get => name;
set => UpdateField(value, ref name);
}
public string Bin {
get => bin;
set => UpdateField(value, ref bin);
}
public ToolDtoModel[] Tools {
get => tools;
set => UpdateField(value, ref tools);
}
public override string ToString() => name;
}
}

View File

@ -0,0 +1,39 @@
using UniversalValveToolbox.Base;
namespace UniversalValveToolbox.Model.Dto {
public class ProjectDtoModel : DtoModel {
private int engine;
private string path;
private string name;
private string args;
public ProjectDtoModel() {
this.engine = 0;
this.path = string.Empty;
this.name = string.Empty;
this.args = string.Empty;
}
public int Engine {
get => engine;
set => UpdateField(value, ref engine);
}
public string Path {
get => path;
set => UpdateField(value, ref path);
}
public string Name {
get => name;
set => UpdateField(value, ref name);
}
public string Args {
get => args;
set => UpdateField(value, ref args);
}
public override string ToString() => name ?? string.Empty;
}
}

View File

@ -0,0 +1,24 @@
using UniversalValveToolbox.Base;
namespace UniversalValveToolbox.Model.Dto {
public class SettingsDtoModel : DtoModel {
private string lastSelectedProject;
private string[] availableLanguages;
private string language;
public string LastSelectedProject {
get => lastSelectedProject;
set => UpdateField(value, ref lastSelectedProject);
}
public string[] AvailableLanguages {
get => availableLanguages;
set => UpdateField(value, ref availableLanguages);
}
public string Language {
get => language;
set => UpdateField(value, ref language);
}
}
}

View File

@ -0,0 +1,24 @@
using UniversalValveToolbox.Base;
namespace UniversalValveToolbox.Model.Dto {
public class ToolDtoModel : DtoModel {
private string args;
private string bin;
private string name;
public string Args {
get => args;
set => UpdateField(value, ref args);
}
public string Bin {
get => bin;
set => UpdateField(value, ref bin);
}
public string Name {
get => name;
set => UpdateField(value, ref name);
}
}
}

View File

@ -0,0 +1,83 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.IO;
using System.Runtime.CompilerServices;
using System.Windows.Forms;
using Newtonsoft.Json;
using UniversalValveToolbox.Model.Dto;
using UniversalValveToolbox.Utils;
namespace UniversalValveToolbox.Model.Provider {
class DataProvider {
public static readonly string JsonRootPath = Path.Combine(Application.StartupPath, "json");
public static readonly string SettingsPath = Path.Combine(JsonRootPath, "settings.json");
public static readonly string EnginesPath = Path.Combine(JsonRootPath, "engines");
public static readonly string ProjectsPath = Path.Combine(JsonRootPath, "projects");
public static readonly string AddonsPath = Path.Combine(JsonRootPath, "addons");
public static readonly SettingsDtoModel DefaultSettings = GenerateDefaultSettings();
public SettingsDtoModel Settings {
get {
validateJsonFolder();
return JsonFileUtil.ReadValue<SettingsDtoModel>(SettingsPath, DefaultSettings);
}
set {
validateJsonFolder();
JsonFileUtil.WriteValue(SettingsPath, value);
}
}
public EngineDtoModel[] Engines {
get {
validateJsonFolder();
return JsonFileUtil.ReadValues<EngineDtoModel>(EnginesPath);
}
}
public AddonDtoModel[] Addons {
get {
validateJsonFolder();
return JsonFileUtil.ReadValues<AddonDtoModel>(AddonsPath);
}
}
public ProjectDtoModel[] Projects {
get {
validateJsonFolder();
return JsonFileUtil.ReadValues<ProjectDtoModel>(ProjectsPath);
}
}
private void validateJsonFolder() {
if (!Directory.Exists(JsonRootPath)) {
Directory.CreateDirectory(JsonRootPath);
}
}
private static SettingsDtoModel GenerateDefaultSettings() {
var result = new SettingsDtoModel();
result.Language = "en-US"; //may be fix in future
var listLang = new List<string>();
var resourceSet = Properties.translations.LangDict.ResourceManager.GetResourceSet(new CultureInfo("en-US"), true, true);
foreach (DictionaryEntry entry in resourceSet) {
listLang.Add(entry.Key.ToString());
}
result.AvailableLanguages = listLang.ToArray();
return result;
}
}
}

View File

@ -0,0 +1,7 @@
using UniversalValveToolbox.Properties.translations;
namespace UniversalValveToolbox.Model.Provider {
public class LanguageProvider {
public string[] Languages { get; } = { LangDict.en_US, LangDict.ru_RU };
}
}

View File

@ -0,0 +1,80 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UniversalValveToolbox.Base;
using UniversalValveToolbox.Model.Dto;
using static System.Windows.Forms.ListView;
namespace UniversalValveToolbox.Model.ViewModel {
class FormAddonViewModel: DtoModel {
private AddonDtoModel[] addons;
private int selectAddonIndex = 0;
private int selectCategoryIndex = 0;
private EngineDtoModel[] engines;
private DictionaryEntry[] categories;
public FormAddonViewModel(AddonDtoModel[] addons, EngineDtoModel[] engines, DictionaryEntry[] categories) {
this.addons = addons;
this.engines = engines;
this.categories = categories;
}
public AddonDtoModel[] Addons {
get => addons;
set {
UpdateField(value, ref addons);
SelectAddonIndex = 0;
}
}
public DictionaryEntry[] Categories {
get => categories;
set {
UpdateField(value, ref categories);
SelectCategoryIndex = 0;
}
}
public int SelectAddonIndex {
get => selectAddonIndex;
set {
ForceUpdateField(value, ref selectAddonIndex);
OnPropertyChanged(nameof(SelectAddon));
}
}
public int SelectCategoryIndex {
get => selectCategoryIndex;
set {
ForceUpdateField(value, ref selectCategoryIndex);
OnPropertyChanged(nameof(SelectCategory));
}
}
public AddonDtoModel SelectAddon {
get {
if (addons == null || addons.Length == 0)
return null;
return addons[selectAddonIndex];
}
}
public DictionaryEntry SelectCategory {
get { return categories[selectCategoryIndex]; }
}
public EngineDtoModel[] Engines {
get => engines;
set {
UpdateField(value, ref engines);
}
}
}
}

View File

@ -0,0 +1,32 @@
using System;
using UniversalValveToolbox.Base;
using UniversalValveToolbox.Model.Dto;
using UniversalValveToolbox.Model.Provider;
namespace UniversalValveToolbox.Model.ViewModel {
public class SettingsViewModel : DtoModel {
private readonly SettingsDtoModel settings;
private readonly LanguageProvider languageProvider;
private int selectedLanguage;
public int SelectedLanguageIndex {
get => selectedLanguage;
set {
if (UpdateField(value, ref selectedLanguage)) {
settings.Language = settings.AvailableLanguages[selectedLanguage];
}
}
}
public string[] Languages => languageProvider.Languages;
private string SelectedLanguage => Languages[SelectedLanguageIndex];
public SettingsViewModel(SettingsDtoModel settings, LanguageProvider languageProvider) {
this.settings = settings;
this.languageProvider = languageProvider;
SelectedLanguageIndex = Math.Max(0, Array.IndexOf(settings.AvailableLanguages, settings.Language));
}
}
}

View File

@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UniversalValveToolbox.Base;
namespace UniversalValveToolbox.Model.ViewModel {
class SteamDataViewModel : DtoModel {
private int steamPid;
private string userNameSteam;
public int SteamPid {
get => steamPid;
set => UpdateField(value, ref steamPid);
}
public string UserNameSteam {
get => userNameSteam;
set => UpdateField(value, ref userNameSteam);
}
}
}

View File

@ -0,0 +1,71 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UniversalValveToolbox.Base;
using UniversalValveToolbox.Model.Dto;
namespace UniversalValveToolbox.Model.ViewModel {
class FormProjectViewModel: DtoModel {
private ProjectDtoModel[] projects;
private int selectProjectIndex = 0;
private EngineDtoModel[] engines;
private int selectEngineIndex = 0;
public FormProjectViewModel(ProjectDtoModel[] projects, EngineDtoModel[] engines) {
this.projects = projects;
this.engines = engines;
}
public ProjectDtoModel[] Projects {
get => projects;
set {
UpdateField(value, ref projects);
SelectProjectIndex = 0;
}
}
public int SelectProjectIndex {
get => selectProjectIndex;
set {
ForceUpdateField(value, ref selectProjectIndex);
OnPropertyChanged(nameof(SelectProject));
var index = Math.Max(engines.ToList().FindIndex(engine => engine.Appid == SelectProject?.Engine), -1);
SelectEngineIndex = index;
}
}
public ProjectDtoModel SelectProject {
get {
if (projects == null || projects.Length == 0)
return null;
return projects[selectProjectIndex];
}
}
public EngineDtoModel[] Engines {
get => engines;
set {
UpdateField(value, ref engines);
SelectEngineIndex = 0;
}
}
public int SelectEngineIndex {
get => selectEngineIndex;
set {
ForceUpdateField(value, ref selectEngineIndex);
OnPropertyChanged(nameof(SelectEngine));
}
}
public EngineDtoModel SelectEngine => engines[selectEngineIndex];
}
}

View File

@ -0,0 +1,23 @@
using System;
using System.Windows.Forms;
using UniversalValveToolbox.Model.Provider;
using UniversalValveToolbox.Utils;
namespace UniversalValveToolbox {
static class Program {
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main() {
var dataProvide = new DataProvider();
var currSettings = dataProvide.Settings;
LanguageManager.UpdateLanguage(currSettings.Language);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new FormMain());
}
}
}

View File

@ -0,0 +1,37 @@
using System;
using System.Reflection;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Universal Valve Toolbox")]
[assembly: AssemblyDescription("Universal Valve Toolbox")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("EpicMorg")]
[assembly: AssemblyProduct("Universal Valve Toolbox")]
[assembly: AssemblyCopyright("Copyright © EpicMorg")]
[assembly: AssemblyTrademark("Valve")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("de66895f-7317-45d3-b5ca-292253ce086a")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -0,0 +1,143 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace UniversalValveToolbox.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("UniversalValveToolbox.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap cancel_16 {
get {
object obj = ResourceManager.GetObject("cancel_16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap checked_16 {
get {
object obj = ResourceManager.GetObject("checked_16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap human_16 {
get {
object obj = ResourceManager.GetObject("human_16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap info_16 {
get {
object obj = ResourceManager.GetObject("info_16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap plug_silhouette_16 {
get {
object obj = ResourceManager.GetObject("plug-silhouette_16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap refresh_16 {
get {
object obj = ResourceManager.GetObject("refresh_16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap run_16 {
get {
object obj = ResourceManager.GetObject("run_16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap valve_64 {
get {
object obj = ResourceManager.GetObject("valve_64", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}

View File

@ -0,0 +1,145 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="checked_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\checked_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="valve_64" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\valve_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="cancel_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\cancel_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="refresh_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\refresh_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="human_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\human_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="info_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\info_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="plug-silhouette_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\plug-silhouette_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="run_16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\run_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@ -0,0 +1,30 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace UniversalValveToolbox.Properties
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get
{
return defaultInstance;
}
}
}
}

View File

@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

View File

@ -0,0 +1,90 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace UniversalValveToolbox.Properties.translations {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class LangDict {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal LangDict() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("UniversalValveToolbox.Properties.translations.LangDict", typeof(LangDict).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized string similar to English.
/// </summary>
internal static string en_US {
get {
return ResourceManager.GetString("en-US", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Russian.
/// </summary>
internal static string ru_RU {
get {
return ResourceManager.GetString("ru-RU", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to EpicMorg.
/// </summary>
internal static string strLangAuthor {
get {
return ResourceManager.GetString("strLangAuthor", resourceCulture);
}
}
}
}

View File

@ -0,0 +1,129 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="en-US" xml:space="preserve">
<value>English</value>
</data>
<data name="ru-RU" xml:space="preserve">
<value>Russian</value>
</data>
<data name="strLangAuthor" xml:space="preserve">
<value>EpicMorg</value>
</data>
</root>

View File

@ -0,0 +1,129 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="en-US" xml:space="preserve">
<value>Английский</value>
</data>
<data name="ru-RU" xml:space="preserve">
<value>Русский</value>
</data>
<data name="strLangAuthor" xml:space="preserve">
<value>EpicMorg</value>
</data>
</root>

View File

@ -0,0 +1,171 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace UniversalValveToolbox.Properties.translations {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class MenuCategories {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal MenuCategories() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("UniversalValveToolbox.Properties.translations.MenuCategories", typeof(MenuCategories).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized string similar to Addons.
/// </summary>
internal static string catAddons {
get {
return ResourceManager.GetString("catAddons", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Compile or Decompile.
/// </summary>
internal static string catCompileDecompile {
get {
return ResourceManager.GetString("catCompileDecompile", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Content.
/// </summary>
internal static string catContent {
get {
return ResourceManager.GetString("catContent", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Docs.
/// </summary>
internal static string catDocs {
get {
return ResourceManager.GetString("catDocs", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Landscape.
/// </summary>
internal static string catLandscape {
get {
return ResourceManager.GetString("catLandscape", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Misc.
/// </summary>
internal static string catMisc {
get {
return ResourceManager.GetString("catMisc", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Settings.
/// </summary>
internal static string catSettings {
get {
return ResourceManager.GetString("catSettings", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Support.
/// </summary>
internal static string catSupport {
get {
return ResourceManager.GetString("catSupport", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Textures.
/// </summary>
internal static string catTextures {
get {
return ResourceManager.GetString("catTextures", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Tools.
/// </summary>
internal static string catTools {
get {
return ResourceManager.GetString("catTools", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Utils.
/// </summary>
internal static string catUtils {
get {
return ResourceManager.GetString("catUtils", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Web Links.
/// </summary>
internal static string catWebLinks {
get {
return ResourceManager.GetString("catWebLinks", resourceCulture);
}
}
}
}

View File

@ -0,0 +1,156 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="catAddons" xml:space="preserve">
<value>Addons</value>
</data>
<data name="catCompileDecompile" xml:space="preserve">
<value>Compile or Decompile</value>
</data>
<data name="catContent" xml:space="preserve">
<value>Content</value>
</data>
<data name="catDocs" xml:space="preserve">
<value>Docs</value>
</data>
<data name="catLandscape" xml:space="preserve">
<value>Landscape</value>
</data>
<data name="catMisc" xml:space="preserve">
<value>Misc</value>
</data>
<data name="catSettings" xml:space="preserve">
<value>Settings</value>
</data>
<data name="catSupport" xml:space="preserve">
<value>Support</value>
</data>
<data name="catTextures" xml:space="preserve">
<value>Textures</value>
</data>
<data name="catTools" xml:space="preserve">
<value>Tools</value>
</data>
<data name="catUtils" xml:space="preserve">
<value>Utils</value>
</data>
<data name="catWebLinks" xml:space="preserve">
<value>Web Links</value>
</data>
</root>

View File

@ -0,0 +1,156 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="catAddons" xml:space="preserve">
<value>Дополнения</value>
</data>
<data name="catCompileDecompile" xml:space="preserve">
<value>Компиляция и Декомпиляция</value>
</data>
<data name="catContent" xml:space="preserve">
<value>Контент</value>
</data>
<data name="catDocs" xml:space="preserve">
<value>Документация</value>
</data>
<data name="catLandscape" xml:space="preserve">
<value>Ландшафт</value>
</data>
<data name="catMisc" xml:space="preserve">
<value>Разное</value>
</data>
<data name="catSettings" xml:space="preserve">
<value>Настройки</value>
</data>
<data name="catSupport" xml:space="preserve">
<value>Поддержка</value>
</data>
<data name="catTextures" xml:space="preserve">
<value>Текстуры</value>
</data>
<data name="catTools" xml:space="preserve">
<value>Программы</value>
</data>
<data name="catUtils" xml:space="preserve">
<value>Утилиты</value>
</data>
<data name="catWebLinks" xml:space="preserve">
<value>Ссылки на Web</value>
</data>
</root>

View File

@ -0,0 +1,126 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace UniversalValveToolbox.Properties.translations {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class MenuItems {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal MenuItems() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("UniversalValveToolbox.Properties.translations.MenuItems", typeof(MenuItems).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized string similar to About.
/// </summary>
internal static string itmAbout {
get {
return ResourceManager.GetString("itmAbout", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Edit Projects.
/// </summary>
internal static string itmEditConfigurations {
get {
return ResourceManager.GetString("itmEditConfigurations", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Edit Addons.
/// </summary>
internal static string itmEditPlugins {
get {
return ResourceManager.GetString("itmEditPlugins", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Sources on GitHub (link).
/// </summary>
internal static string itmGitHubLink {
get {
return ResourceManager.GetString("itmGitHubLink", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Report Issue, Bug, Feature Request, etc (link).
/// </summary>
internal static string itmGitHubReport {
get {
return ResourceManager.GetString("itmGitHubReport", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Open Settings.
/// </summary>
internal static string itmOpenSettings {
get {
return ResourceManager.GetString("itmOpenSettings", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Run Project.
/// </summary>
internal static string itmRunProject {
get {
return ResourceManager.GetString("itmRunProject", resourceCulture);
}
}
}
}

View File

@ -0,0 +1,141 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="itmAbout" xml:space="preserve">
<value>About</value>
</data>
<data name="itmEditConfigurations" xml:space="preserve">
<value>Edit Projects</value>
</data>
<data name="itmEditPlugins" xml:space="preserve">
<value>Edit Addons</value>
</data>
<data name="itmGitHubLink" xml:space="preserve">
<value>Sources on GitHub (link)</value>
</data>
<data name="itmGitHubReport" xml:space="preserve">
<value>Report Issue, Bug, Feature Request, etc (link)</value>
</data>
<data name="itmOpenSettings" xml:space="preserve">
<value>Open Settings</value>
</data>
<data name="itmRunProject" xml:space="preserve">
<value>Run Project</value>
</data>
</root>

View File

@ -0,0 +1,141 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="itmAbout" xml:space="preserve">
<value>О Программе</value>
</data>
<data name="itmEditConfigurations" xml:space="preserve">
<value>Редактор Проектов</value>
</data>
<data name="itmEditPlugins" xml:space="preserve">
<value>Редактор Дополнений</value>
</data>
<data name="itmGitHubLink" xml:space="preserve">
<value>Исходный код на GitHub (ссылка)</value>
</data>
<data name="itmGitHubReport" xml:space="preserve">
<value>Сообщить об ошибке, создать запрос, и тд (ссылка)</value>
</data>
<data name="itmOpenSettings" xml:space="preserve">
<value>Открыть Настройки</value>
</data>
<data name="itmRunProject" xml:space="preserve">
<value>Запуск Проекта</value>
</data>
</root>

View File

@ -0,0 +1,135 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace UniversalValveToolbox.Properties.translations {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class MenuNavbar {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal MenuNavbar() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("UniversalValveToolbox.Properties.translations.MenuNavbar", typeof(MenuNavbar).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized string similar to Addons: .
/// </summary>
internal static string menuStrAddons {
get {
return ResourceManager.GetString("menuStrAddons", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Engines: .
/// </summary>
internal static string menuStrEngines {
get {
return ResourceManager.GetString("menuStrEngines", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Login: .
/// </summary>
internal static string menuStrLogin {
get {
return ResourceManager.GetString("menuStrLogin", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to none.
/// </summary>
internal static string menuStrNone {
get {
return ResourceManager.GetString("menuStrNone", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to offilne.
/// </summary>
internal static string menuStrOffline {
get {
return ResourceManager.GetString("menuStrOffline", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to online.
/// </summary>
internal static string menuStrOnline {
get {
return ResourceManager.GetString("menuStrOnline", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Projects: .
/// </summary>
internal static string menuStrProjects {
get {
return ResourceManager.GetString("menuStrProjects", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Steam: .
/// </summary>
internal static string menuStrSteam {
get {
return ResourceManager.GetString("menuStrSteam", resourceCulture);
}
}
}
}

View File

@ -0,0 +1,144 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="menuStrAddons" xml:space="preserve">
<value>Addons: </value>
</data>
<data name="menuStrEngines" xml:space="preserve">
<value>Engines: </value>
</data>
<data name="menuStrLogin" xml:space="preserve">
<value>Login: </value>
</data>
<data name="menuStrNone" xml:space="preserve">
<value>none</value>
</data>
<data name="menuStrOffline" xml:space="preserve">
<value>offilne</value>
</data>
<data name="menuStrOnline" xml:space="preserve">
<value>online</value>
</data>
<data name="menuStrProjects" xml:space="preserve">
<value>Projects: </value>
</data>
<data name="menuStrSteam" xml:space="preserve">
<value>Steam: </value>
</data>
</root>

View File

@ -0,0 +1,144 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="menuStrAddons" xml:space="preserve">
<value>Дополнения: </value>
</data>
<data name="menuStrEngines" xml:space="preserve">
<value>Движки: </value>
</data>
<data name="menuStrLogin" xml:space="preserve">
<value>Логин: </value>
</data>
<data name="menuStrNone" xml:space="preserve">
<value>нет</value>
</data>
<data name="menuStrOffline" xml:space="preserve">
<value>оффлайн</value>
</data>
<data name="menuStrOnline" xml:space="preserve">
<value>онлайн</value>
</data>
<data name="menuStrProjects" xml:space="preserve">
<value>Проекты: </value>
</data>
<data name="menuStrSteam" xml:space="preserve">
<value>Steam: </value>
</data>
</root>

View File

@ -0,0 +1,126 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace UniversalValveToolbox.Properties.translations {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class MessageBoxes {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal MessageBoxes() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("UniversalValveToolbox.Properties.translations.MessageBoxes", typeof(MessageBoxes).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized string similar to Info.
/// </summary>
internal static string msgInfo {
get {
return ResourceManager.GetString("msgInfo", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to cancelled..
/// </summary>
internal static string msgTextCancelled {
get {
return ResourceManager.GetString("msgTextCancelled", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Installation of.
/// </summary>
internal static string msgTextInstallationOf {
get {
return ResourceManager.GetString("msgTextInstallationOf", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to not found..
/// </summary>
internal static string msgTextNotFound {
get {
return ResourceManager.GetString("msgTextNotFound", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to not installed. Do you want to install it?.
/// </summary>
internal static string msgTextNotInstalledInstall {
get {
return ResourceManager.GetString("msgTextNotInstalledInstall", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to with app id.
/// </summary>
internal static string msgTextWithAppID {
get {
return ResourceManager.GetString("msgTextWithAppID", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Warning.
/// </summary>
internal static string msgWarning {
get {
return ResourceManager.GetString("msgWarning", resourceCulture);
}
}
}
}

View File

@ -0,0 +1,141 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="msgInfo" xml:space="preserve">
<value>Info</value>
</data>
<data name="msgTextCancelled" xml:space="preserve">
<value>cancelled.</value>
</data>
<data name="msgTextInstallationOf" xml:space="preserve">
<value>Installation of</value>
</data>
<data name="msgTextNotFound" xml:space="preserve">
<value>not found.</value>
</data>
<data name="msgTextNotInstalledInstall" xml:space="preserve">
<value>not installed. Do you want to install it?</value>
</data>
<data name="msgTextWithAppID" xml:space="preserve">
<value>with app id</value>
</data>
<data name="msgWarning" xml:space="preserve">
<value>Warning</value>
</data>
</root>

View File

@ -0,0 +1,141 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="msgInfo" xml:space="preserve">
<value>Информация</value>
</data>
<data name="msgTextCancelled" xml:space="preserve">
<value>отменена.</value>
</data>
<data name="msgTextInstallationOf" xml:space="preserve">
<value>Установка</value>
</data>
<data name="msgTextNotFound" xml:space="preserve">
<value> не найден.</value>
</data>
<data name="msgTextNotInstalledInstall" xml:space="preserve">
<value>не установлен. Хотите установить?</value>
</data>
<data name="msgTextWithAppID" xml:space="preserve">
<value>с номером</value>
</data>
<data name="msgWarning" xml:space="preserve">
<value>Внимание</value>
</data>
</root>

View File

@ -0,0 +1,81 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace UniversalValveToolbox.Properties.translations {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class VarStrings {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal VarStrings() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("UniversalValveToolbox.Properties.translations.VarStrings", typeof(VarStrings).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized string similar to &lt;New Addon&gt;.
/// </summary>
internal static string strNewAddon {
get {
return ResourceManager.GetString("strNewAddon", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to &lt;New Project&gt;.
/// </summary>
internal static string strNewProject {
get {
return ResourceManager.GetString("strNewProject", resourceCulture);
}
}
}
}

View File

@ -0,0 +1,126 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="strNewAddon" xml:space="preserve">
<value>&lt;New Addon&gt;</value>
</data>
<data name="strNewProject" xml:space="preserve">
<value>&lt;New Project&gt;</value>
</data>
</root>

View File

@ -0,0 +1,126 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="strNewAddon" xml:space="preserve">
<value>&lt;Новое Дополнение&gt;</value>
</data>
<data name="strNewProject" xml:space="preserve">
<value>&lt;Новый Проект&gt;</value>
</data>
</root>

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 555 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 459 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 513 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 512 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 463 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 385 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -0,0 +1,150 @@
namespace UniversalValveToolbox
{
partial class FormAbout
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormAbout));
this.labelVersion = new System.Windows.Forms.Label();
this.pictureBoxLogo = new System.Windows.Forms.PictureBox();
this.labelTitle = new System.Windows.Forms.Label();
this.labelCopy = new System.Windows.Forms.Label();
this.labelDivider = new System.Windows.Forms.Label();
this.buttonOK = new System.Windows.Forms.Button();
this.linkLabelIconSite = new System.Windows.Forms.LinkLabel();
this.groupBox = new System.Windows.Forms.GroupBox();
this.linkLabelTI = new System.Windows.Forms.LinkLabel();
this.linkLabelFP = new System.Windows.Forms.LinkLabel();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxLogo)).BeginInit();
this.groupBox.SuspendLayout();
this.SuspendLayout();
//
// labelVersion
//
resources.ApplyResources(this.labelVersion, "labelVersion");
this.labelVersion.Name = "labelVersion";
//
// pictureBoxLogo
//
this.pictureBoxLogo.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.pictureBoxLogo.Image = global::UniversalValveToolbox.Properties.Resources.valve_64;
resources.ApplyResources(this.pictureBoxLogo, "pictureBoxLogo");
this.pictureBoxLogo.Name = "pictureBoxLogo";
this.pictureBoxLogo.TabStop = false;
//
// labelTitle
//
resources.ApplyResources(this.labelTitle, "labelTitle");
this.labelTitle.Name = "labelTitle";
//
// labelCopy
//
resources.ApplyResources(this.labelCopy, "labelCopy");
this.labelCopy.Name = "labelCopy";
//
// labelDivider
//
resources.ApplyResources(this.labelDivider, "labelDivider");
this.labelDivider.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.labelDivider.Name = "labelDivider";
//
// buttonOK
//
resources.ApplyResources(this.buttonOK, "buttonOK");
this.buttonOK.Name = "buttonOK";
this.buttonOK.UseVisualStyleBackColor = true;
this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
//
// linkLabelIconSite
//
resources.ApplyResources(this.linkLabelIconSite, "linkLabelIconSite");
this.linkLabelIconSite.Name = "linkLabelIconSite";
this.linkLabelIconSite.TabStop = true;
this.linkLabelIconSite.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabelIconSite_LinkClicked);
//
// groupBox
//
resources.ApplyResources(this.groupBox, "groupBox");
this.groupBox.Controls.Add(this.linkLabelTI);
this.groupBox.Controls.Add(this.linkLabelFP);
this.groupBox.Controls.Add(this.linkLabelIconSite);
this.groupBox.Name = "groupBox";
this.groupBox.TabStop = false;
//
// linkLabelTI
//
resources.ApplyResources(this.linkLabelTI, "linkLabelTI");
this.linkLabelTI.Name = "linkLabelTI";
this.linkLabelTI.TabStop = true;
this.linkLabelTI.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabelTI_LinkClicked);
//
// linkLabelFP
//
resources.ApplyResources(this.linkLabelFP, "linkLabelFP");
this.linkLabelFP.Name = "linkLabelFP";
this.linkLabelFP.TabStop = true;
this.linkLabelFP.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabelFP_LinkClicked);
//
// FormAbout
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.groupBox);
this.Controls.Add(this.buttonOK);
this.Controls.Add(this.labelDivider);
this.Controls.Add(this.labelTitle);
this.Controls.Add(this.pictureBoxLogo);
this.Controls.Add(this.labelCopy);
this.Controls.Add(this.labelVersion);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "FormAbout";
this.ShowInTaskbar = false;
this.Load += new System.EventHandler(this.FormAbout_Load);
((System.ComponentModel.ISupportInitialize)(this.pictureBoxLogo)).EndInit();
this.groupBox.ResumeLayout(false);
this.groupBox.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label labelVersion;
private System.Windows.Forms.PictureBox pictureBoxLogo;
private System.Windows.Forms.Label labelTitle;
private System.Windows.Forms.Label labelCopy;
private System.Windows.Forms.Label labelDivider;
private System.Windows.Forms.Button buttonOK;
private System.Windows.Forms.LinkLabel linkLabelIconSite;
private System.Windows.Forms.GroupBox groupBox;
private System.Windows.Forms.LinkLabel linkLabelTI;
private System.Windows.Forms.LinkLabel linkLabelFP;
}
}

View File

@ -0,0 +1,34 @@
using System;
using System.Diagnostics;
using System.Windows.Forms;
namespace UniversalValveToolbox {
public partial class FormAbout : Form {
public FormAbout() {
InitializeComponent();
labelVersion.Text = Utils.VersionHelper.AssemblyVersion;
labelTitle.Text = Utils.VersionHelper.AssemblyTitle;
labelCopy.Text = Utils.VersionHelper.AssemblyCopyright;
}
private void FormAbout_Load(object sender, EventArgs e) {
}
private void buttonOK_Click(object sender, EventArgs e) {
Close();
}
private void linkLabelIconSite_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) {
Process.Start("https://www.flaticon.com/");
}
private void linkLabelFP_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) {
Process.Start("https://www.flaticon.com/authors/freepik");
}
private void linkLabelTI_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) {
Process.Start("https://www.flaticon.com/authors/those-icons");
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,225 @@
namespace UniversalValveToolbox
{
partial class FormAddons
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormAddons));
this.buttonCancel = new System.Windows.Forms.Button();
this.buttonOK = new System.Windows.Forms.Button();
this.comboBox_Addon = new System.Windows.Forms.ComboBox();
this.buttonRemove = new System.Windows.Forms.Button();
this.buttonNew = new System.Windows.Forms.Button();
this.labelAddon = new System.Windows.Forms.Label();
this.labelLinkedEngine = new System.Windows.Forms.Label();
this.labelName = new System.Windows.Forms.Label();
this.textBoxName = new System.Windows.Forms.TextBox();
this.textBoxPath = new System.Windows.Forms.TextBox();
this.labelPath = new System.Windows.Forms.Label();
this.textBoxArgs = new System.Windows.Forms.TextBox();
this.labelArgs = new System.Windows.Forms.Label();
this.buttonBrowse = new System.Windows.Forms.Button();
this.labelDivider = new System.Windows.Forms.Label();
this.comboBoxCategory = new System.Windows.Forms.ComboBox();
this.labelCategory = new System.Windows.Forms.Label();
this.buttonApply = new System.Windows.Forms.Button();
this.engineCheckedListBox = new System.Windows.Forms.CheckedListBox();
this.SuspendLayout();
//
// buttonCancel
//
resources.ApplyResources(this.buttonCancel, "buttonCancel");
this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.buttonCancel.Name = "buttonCancel";
this.buttonCancel.UseVisualStyleBackColor = true;
this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
//
// buttonOK
//
resources.ApplyResources(this.buttonOK, "buttonOK");
this.buttonOK.DialogResult = System.Windows.Forms.DialogResult.OK;
this.buttonOK.Name = "buttonOK";
this.buttonOK.UseVisualStyleBackColor = true;
this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
//
// comboBox_Addon
//
resources.ApplyResources(this.comboBox_Addon, "comboBox_Addon");
this.comboBox_Addon.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox_Addon.FormattingEnabled = true;
this.comboBox_Addon.Name = "comboBox_Addon";
this.comboBox_Addon.SelectedIndexChanged += new System.EventHandler(this.comboBox_Addon_SelectedIndexChanged);
//
// buttonRemove
//
resources.ApplyResources(this.buttonRemove, "buttonRemove");
this.buttonRemove.Name = "buttonRemove";
this.buttonRemove.UseVisualStyleBackColor = true;
this.buttonRemove.Click += new System.EventHandler(this.buttonRemove_Click);
//
// buttonNew
//
resources.ApplyResources(this.buttonNew, "buttonNew");
this.buttonNew.Name = "buttonNew";
this.buttonNew.UseVisualStyleBackColor = true;
this.buttonNew.Click += new System.EventHandler(this.buttonNew_Click);
//
// labelAddon
//
resources.ApplyResources(this.labelAddon, "labelAddon");
this.labelAddon.Name = "labelAddon";
//
// labelLinkedEngine
//
resources.ApplyResources(this.labelLinkedEngine, "labelLinkedEngine");
this.labelLinkedEngine.Name = "labelLinkedEngine";
//
// labelName
//
resources.ApplyResources(this.labelName, "labelName");
this.labelName.Name = "labelName";
//
// textBoxName
//
resources.ApplyResources(this.textBoxName, "textBoxName");
this.textBoxName.Name = "textBoxName";
//
// textBoxPath
//
resources.ApplyResources(this.textBoxPath, "textBoxPath");
this.textBoxPath.Name = "textBoxPath";
//
// labelPath
//
resources.ApplyResources(this.labelPath, "labelPath");
this.labelPath.Name = "labelPath";
//
// textBoxArgs
//
resources.ApplyResources(this.textBoxArgs, "textBoxArgs");
this.textBoxArgs.Name = "textBoxArgs";
//
// labelArgs
//
resources.ApplyResources(this.labelArgs, "labelArgs");
this.labelArgs.Name = "labelArgs";
//
// buttonBrowse
//
resources.ApplyResources(this.buttonBrowse, "buttonBrowse");
this.buttonBrowse.Name = "buttonBrowse";
this.buttonBrowse.UseVisualStyleBackColor = true;
this.buttonBrowse.Click += new System.EventHandler(this.buttonBrowse_Click);
//
// labelDivider
//
resources.ApplyResources(this.labelDivider, "labelDivider");
this.labelDivider.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.labelDivider.Name = "labelDivider";
//
// comboBoxCategory
//
resources.ApplyResources(this.comboBoxCategory, "comboBoxCategory");
this.comboBoxCategory.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBoxCategory.FormattingEnabled = true;
this.comboBoxCategory.Name = "comboBoxCategory";
this.comboBoxCategory.SelectedIndexChanged += new System.EventHandler(this.comboBoxCategory_SelectedIndexChanged);
//
// labelCategory
//
resources.ApplyResources(this.labelCategory, "labelCategory");
this.labelCategory.Name = "labelCategory";
//
// buttonApply
//
resources.ApplyResources(this.buttonApply, "buttonApply");
this.buttonApply.Name = "buttonApply";
this.buttonApply.UseVisualStyleBackColor = true;
this.buttonApply.Click += new System.EventHandler(this.buttonApply_Click);
//
// engineCheckedListBox
//
resources.ApplyResources(this.engineCheckedListBox, "engineCheckedListBox");
this.engineCheckedListBox.CheckOnClick = true;
this.engineCheckedListBox.FormattingEnabled = true;
this.engineCheckedListBox.Name = "engineCheckedListBox";
//
// FormAddons
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.engineCheckedListBox);
this.Controls.Add(this.buttonApply);
this.Controls.Add(this.labelCategory);
this.Controls.Add(this.comboBoxCategory);
this.Controls.Add(this.labelDivider);
this.Controls.Add(this.buttonBrowse);
this.Controls.Add(this.textBoxArgs);
this.Controls.Add(this.labelArgs);
this.Controls.Add(this.textBoxPath);
this.Controls.Add(this.labelPath);
this.Controls.Add(this.textBoxName);
this.Controls.Add(this.labelName);
this.Controls.Add(this.labelLinkedEngine);
this.Controls.Add(this.labelAddon);
this.Controls.Add(this.buttonRemove);
this.Controls.Add(this.buttonNew);
this.Controls.Add(this.buttonCancel);
this.Controls.Add(this.buttonOK);
this.Controls.Add(this.comboBox_Addon);
this.Name = "FormAddons";
this.ShowInTaskbar = false;
this.Load += new System.EventHandler(this.FormAddons_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button buttonCancel;
private System.Windows.Forms.Button buttonOK;
private System.Windows.Forms.ComboBox comboBox_Addon;
private System.Windows.Forms.Button buttonRemove;
private System.Windows.Forms.Button buttonNew;
private System.Windows.Forms.Label labelAddon;
private System.Windows.Forms.Label labelLinkedEngine;
private System.Windows.Forms.Label labelName;
private System.Windows.Forms.TextBox textBoxName;
private System.Windows.Forms.TextBox textBoxPath;
private System.Windows.Forms.Label labelPath;
private System.Windows.Forms.TextBox textBoxArgs;
private System.Windows.Forms.Label labelArgs;
private System.Windows.Forms.Button buttonBrowse;
private System.Windows.Forms.Label labelDivider;
private System.Windows.Forms.ComboBox comboBoxCategory;
private System.Windows.Forms.Label labelCategory;
private System.Windows.Forms.Button buttonApply;
private System.Windows.Forms.CheckedListBox engineCheckedListBox;
}
}

View File

@ -0,0 +1,198 @@
using System;
using System.Windows.Forms;
using UniversalValveToolbox.Model.Provider;
using UniversalValveToolbox.Model.ViewModel;
using UniversalValveToolbox.Model.Dto;
using kasthack.binding.wf;
using System.Linq;
using System.Collections.Generic;
using UniversalValveToolbox.Utils;
using System.Globalization;
using System.Collections;
using EpicMorg.SteamPathsLib;
namespace UniversalValveToolbox {
public partial class FormAddons : Form {
private bool needRestart;
private bool isEnableListBoxCheckListener = false;
private DataProvider dataProvider = new DataProvider();
private FormAddonViewModel model;
public FormAddons() {
InitializeComponent();
var categories = Properties.translations.MenuCategories
.ResourceManager
.GetResourceSet(CultureInfo.CurrentCulture, false, true)
.Cast<DictionaryEntry>()
.ToArray();
model = new FormAddonViewModel(dataProvider.Addons, dataProvider.Engines.Where(engine => SteamPathsUtil.GetSteamAppDataById(engine.Appid) != null).ToArray(), categories);
UpdateAddonsComboBox();
UpdateAddonCategoryComboBox();
UpdateEngineCheckedListView();
comboBox_Addon.Bind(a => a.SelectedIndex, model, a => a.SelectAddonIndex);
comboBoxCategory.Bind(a => a.SelectedIndex, model, a => a.SelectCategoryIndex);
textBoxName.Bind(a => a.Text, model, a => a.SelectAddon.Name);
textBoxPath.Bind(a => a.Text, model, a => a.SelectAddon.Bin);
textBoxArgs.Bind(a => a.Text, model, a => a.SelectAddon.Args);
model.PropertyChanged += Model_PropertyChanged;
this.engineCheckedListBox.ItemCheck += EngineCheckedListBox_ItemCheck;
}
private void EngineCheckedListBox_ItemCheck(object sender, ItemCheckEventArgs e) {
if (isEnableListBoxCheckListener) {
List<EngineDtoModel> checkedItems = new List<EngineDtoModel>();
foreach (var item in engineCheckedListBox.CheckedItems)
checkedItems.Add((EngineDtoModel)item);
if (e.NewValue == CheckState.Checked)
checkedItems.Add((EngineDtoModel)engineCheckedListBox.Items[e.Index]);
else
checkedItems.Remove((EngineDtoModel)engineCheckedListBox.Items[e.Index]);
model.SelectAddon.Engines = checkedItems.Select(engine => engine.Appid).ToArray();
}
}
private void Model_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) {
if (e.PropertyName == nameof(model.SelectAddon)) {
UpdateEngineCheckedListView();
}
}
private void UpdateEngineCheckedListView() {
isEnableListBoxCheckListener = false;
engineCheckedListBox.Items.Clear();
engineCheckedListBox.Items.AddRange(model.Engines);
if (model.SelectAddon != null) {
for (var i = 0; i < model.Engines.Length; i++) {
var engine = model.Engines[i];
if (model.SelectAddon.Engines.Contains(engine.Appid)) {
engineCheckedListBox.SetItemChecked(i, true);
}
}
}
else {
for (var i = 0; i < model.Engines.Length; i++) {
engineCheckedListBox.SetItemChecked(i, false);
}
}
isEnableListBoxCheckListener = true;
}
private void UpdateAddonsComboBox() {
if (model.Addons.Length == 0) {
New();
}
else {
comboBox_Addon.Items.Clear();
comboBox_Addon.Items.AddRange(model.Addons);
comboBox_Addon.SelectedIndex = 0;
}
}
private void UpdateAddonCategoryComboBox() {
comboBoxCategory.Items.Clear();
comboBoxCategory.Items.AddRange(model.Categories.Select(c => c.Value).ToArray());
var index = Array.IndexOf(model.Categories.Select(c => c.Key).ToArray(), model.SelectAddon.Category);
comboBoxCategory.SelectedIndex = index;
}
private void buttonCancel_Click(object sender, EventArgs e) {
Close();
}
private void buttonBrowse_Click(object sender, EventArgs e) {
OpenFileDialog dialog = new OpenFileDialog {
InitialDirectory = @"C:\",
DefaultExt = "exe",
Filter = "Exe file (*.exe) | *.exe",
Multiselect = false,
RestoreDirectory = true
};
if (dialog.ShowDialog() == DialogResult.OK) {
textBoxPath.Text = dialog.FileName;
}
}
private void FormAddons_Load(object sender, EventArgs e) {
}
private void comboBox_Addon_SelectedIndexChanged(object sender, EventArgs e) {
model.SelectAddonIndex = comboBox_Addon.SelectedIndex;
}
private void Remove() {
var newAddonList = new List<AddonDtoModel>(model.Addons);
newAddonList.RemoveAt(model.SelectAddonIndex);
model.Addons = newAddonList.ToArray();
UpdateAddonsComboBox();
}
private void New() {
var newAddon = CreateNewEmptyAddon();
var newAddonList = new List<AddonDtoModel>(model.Addons);
newAddonList.Insert(0, newAddon);
model.Addons = newAddonList.ToArray();
UpdateAddonsComboBox();
}
private AddonDtoModel CreateNewEmptyAddon() {
var newAddon = new AddonDtoModel();
newAddon.Name = Properties.translations.VarStrings.strNewAddon;
return newAddon;
}
private void Save() {
JsonFileUtil.SaveValues(DataProvider.AddonsPath, "json", model.Addons.ToList());
}
private void buttonRemove_Click(object sender, EventArgs e) {
Remove();
}
private void buttonNew_Click(object sender, EventArgs e) {
New();
}
private void buttonApply_Click(object sender, EventArgs e) {
needRestart = true;
Save();
}
private void buttonOK_Click(object sender, EventArgs e) {
Save();
Close();
}
private void comboBoxCategory_SelectedIndexChanged(object sender, EventArgs e) {
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,194 @@
namespace UniversalValveToolbox
{
partial class FormMain
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormMain));
this.comboBoxProjects = new System.Windows.Forms.ComboBox();
this.comboBoxEngine = new System.Windows.Forms.ComboBox();
this.listView = new System.Windows.Forms.ListView();
this.imageListLarge = new System.Windows.Forms.ImageList(this.components);
this.imageListSmall = new System.Windows.Forms.ImageList(this.components);
this.statusStrip = new System.Windows.Forms.StatusStrip();
this.toolStripStatusLabelSteam = new System.Windows.Forms.ToolStripStatusLabel();
this.toolStripStatusLabelLogin = new System.Windows.Forms.ToolStripStatusLabel();
this.toolStripStatusLabelEngines = new System.Windows.Forms.ToolStripStatusLabel();
this.toolStripStatusLabelAddons = new System.Windows.Forms.ToolStripStatusLabel();
this.toolStripStatusLabelRefresh = new System.Windows.Forms.ToolStripStatusLabel();
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
this.statusStrip.SuspendLayout();
this.SuspendLayout();
//
// comboBoxProjects
//
resources.ApplyResources(this.comboBoxProjects, "comboBoxProjects");
this.comboBoxProjects.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBoxProjects.FormattingEnabled = true;
this.comboBoxProjects.Items.AddRange(new object[] {
resources.GetString("comboBoxProjects.Items")});
this.comboBoxProjects.Name = "comboBoxProjects";
//
// comboBoxEngine
//
resources.ApplyResources(this.comboBoxEngine, "comboBoxEngine");
this.comboBoxEngine.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBoxEngine.FormattingEnabled = true;
this.comboBoxEngine.Items.AddRange(new object[] {
resources.GetString("comboBoxEngine.Items")});
this.comboBoxEngine.Name = "comboBoxEngine";
//
// listView
//
resources.ApplyResources(this.listView, "listView");
this.listView.GridLines = true;
this.listView.HideSelection = false;
this.listView.LargeImageList = this.imageListLarge;
this.listView.MultiSelect = false;
this.listView.Name = "listView";
this.listView.SmallImageList = this.imageListSmall;
this.listView.StateImageList = this.imageListLarge;
this.listView.TileSize = new System.Drawing.Size(320, 30);
this.listView.UseCompatibleStateImageBehavior = false;
this.listView.View = System.Windows.Forms.View.Tile;
this.listView.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.listView_MouseDoubleClick);
//
// imageListLarge
//
this.imageListLarge.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageListLarge.ImageStream")));
this.imageListLarge.TransparentColor = System.Drawing.Color.Transparent;
this.imageListLarge.Images.SetKeyName(0, "github-logo_24.png");
this.imageListLarge.Images.SetKeyName(1, "internet_24.png");
this.imageListLarge.Images.SetKeyName(2, "settings_24.png");
this.imageListLarge.Images.SetKeyName(3, "technical-support_24.png");
this.imageListLarge.Images.SetKeyName(4, "plug-silhouette_24.png");
this.imageListLarge.Images.SetKeyName(5, "info_24.png");
//
// imageListSmall
//
this.imageListSmall.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageListSmall.ImageStream")));
this.imageListSmall.TransparentColor = System.Drawing.Color.Transparent;
this.imageListSmall.Images.SetKeyName(0, "github-logo_16.png");
this.imageListSmall.Images.SetKeyName(1, "internet_16.png");
this.imageListSmall.Images.SetKeyName(2, "settings_16.png");
this.imageListSmall.Images.SetKeyName(3, "technical-support_16.png");
this.imageListSmall.Images.SetKeyName(4, "plug-silhouette_16.png");
this.imageListSmall.Images.SetKeyName(5, "info_16.png");
//
// statusStrip
//
resources.ApplyResources(this.statusStrip, "statusStrip");
this.statusStrip.GripStyle = System.Windows.Forms.ToolStripGripStyle.Visible;
this.statusStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripStatusLabelSteam,
this.toolStripStatusLabelLogin,
this.toolStripStatusLabelEngines,
this.toolStripStatusLabelAddons,
this.toolStripStatusLabelRefresh});
this.statusStrip.Name = "statusStrip";
this.statusStrip.ShowItemToolTips = true;
//
// toolStripStatusLabelSteam
//
resources.ApplyResources(this.toolStripStatusLabelSteam, "toolStripStatusLabelSteam");
this.toolStripStatusLabelSteam.Image = global::UniversalValveToolbox.Properties.Resources.cancel_16;
this.toolStripStatusLabelSteam.Margin = new System.Windows.Forms.Padding(11, 3, 0, 2);
this.toolStripStatusLabelSteam.Name = "toolStripStatusLabelSteam";
//
// toolStripStatusLabelLogin
//
resources.ApplyResources(this.toolStripStatusLabelLogin, "toolStripStatusLabelLogin");
this.toolStripStatusLabelLogin.Image = global::UniversalValveToolbox.Properties.Resources.human_16;
this.toolStripStatusLabelLogin.Name = "toolStripStatusLabelLogin";
//
// toolStripStatusLabelEngines
//
resources.ApplyResources(this.toolStripStatusLabelEngines, "toolStripStatusLabelEngines");
this.toolStripStatusLabelEngines.Image = global::UniversalValveToolbox.Properties.Resources.info_16;
this.toolStripStatusLabelEngines.Name = "toolStripStatusLabelEngines";
//
// toolStripStatusLabelAddons
//
resources.ApplyResources(this.toolStripStatusLabelAddons, "toolStripStatusLabelAddons");
this.toolStripStatusLabelAddons.Image = global::UniversalValveToolbox.Properties.Resources.plug_silhouette_16;
this.toolStripStatusLabelAddons.Name = "toolStripStatusLabelAddons";
//
// toolStripStatusLabelRefresh
//
resources.ApplyResources(this.toolStripStatusLabelRefresh, "toolStripStatusLabelRefresh");
this.toolStripStatusLabelRefresh.BorderSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)((((System.Windows.Forms.ToolStripStatusLabelBorderSides.Left | System.Windows.Forms.ToolStripStatusLabelBorderSides.Top)
| System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
| System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom)));
this.toolStripStatusLabelRefresh.BorderStyle = System.Windows.Forms.Border3DStyle.RaisedOuter;
this.toolStripStatusLabelRefresh.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.toolStripStatusLabelRefresh.DoubleClickEnabled = true;
this.toolStripStatusLabelRefresh.Image = global::UniversalValveToolbox.Properties.Resources.refresh_16;
this.toolStripStatusLabelRefresh.IsLink = true;
this.toolStripStatusLabelRefresh.Name = "toolStripStatusLabelRefresh";
this.toolStripStatusLabelRefresh.Click += new System.EventHandler(this.toolStripStatusLabelRefresh_Click);
//
// openFileDialog1
//
this.openFileDialog1.FileName = "openFileDialog1";
resources.ApplyResources(this.openFileDialog1, "openFileDialog1");
//
// FormMain
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.statusStrip);
this.Controls.Add(this.listView);
this.Controls.Add(this.comboBoxEngine);
this.Controls.Add(this.comboBoxProjects);
this.DoubleBuffered = true;
this.Name = "FormMain";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FormMain_FormClosing);
this.Load += new System.EventHandler(this.FormMain_Load);
this.statusStrip.ResumeLayout(false);
this.statusStrip.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.ComboBox comboBoxProjects;
private System.Windows.Forms.ComboBox comboBoxEngine;
private System.Windows.Forms.ListView listView;
private System.Windows.Forms.StatusStrip statusStrip;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelSteam;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelLogin;
private System.Windows.Forms.ImageList imageListLarge;
private System.Windows.Forms.ImageList imageListSmall;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelRefresh;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelEngines;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelAddons;
private System.Windows.Forms.OpenFileDialog openFileDialog1;
}
}

View File

@ -0,0 +1,469 @@
using EpicMorg.SteamPathsLib;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Web.UI;
using System.Windows.Forms;
using UniversalValveToolbox.Model.Dto;
using UniversalValveToolbox.Model.Provider;
using UniversalValveToolbox.Model.ViewModel;
using UniversalValveToolbox.Utils;
namespace UniversalValveToolbox {
public partial class FormMain : Form {
private readonly string RUN_PROJECT_ID = "RUN_PROJECT_ID";
private EngineDtoModel[] Engines;
private ProjectDtoModel[] Projects;
private ProjectDtoModel[] AvailableProjects;
private DataProvider dataProvider = new DataProvider();
private ListViewGroup listViewGroupAddons;
private ListViewGroup listViewGroupTools;
private EngineDtoModel SelectedEngine {
get {
if (Engines.Length == 0)
return null;
return Engines[comboBoxEngine.SelectedIndex];
}
}
private ProjectDtoModel SelectedProject {
get => (ProjectDtoModel)((comboBoxProjects.Enabled)
? Projects.First(project => project.Name.Equals(comboBoxProjects.SelectedItem))
: null);
}
public FormMain() {
InitializeComponent();
FillBaseMenuItems();
UpdateFormData();
Text = VersionHelper.AssemblyTitle + VersionHelper.AssemblyVersion;
comboBoxEngine.SelectedIndexChanged += (s, e) => {
UpdateProjectList();
UpdateToolsList();
UpdateAddonsList();
};
}
private void FormMain_Load(object sender, EventArgs e) {
}
private void UpdateLastSelectedProject() {
var lastSelectedProject = dataProvider.Projects.FirstOrDefault(project => project.Name.Equals(dataProvider.Settings.LastSelectedProject));
if (lastSelectedProject != null && Engines.Length != 0) {
var indexEngine = comboBoxEngine.Items.IndexOf(Engines.First(engine => engine.Appid.Equals(lastSelectedProject.Engine)).Name);
comboBoxEngine.SelectedIndex = indexEngine;
UpdateProjectList();
UpdateToolsList();
var indexProject = comboBoxProjects.Items.IndexOf(lastSelectedProject.Name);
comboBoxProjects.SelectedIndex = indexProject;
EnvUtils.PrepareVProject($"{SelectedProject?.Path ?? string.Empty}");
EnvUtils.PrepareSFMData($"{SelectedProject?.Path ?? string.Empty}");
}
}
private void SaveLastSelectedProject() {
var settings = dataProvider.Settings;
settings.LastSelectedProject = SelectedProject?.Name;
dataProvider.Settings = settings;
}
private void UpdateFormData() {
UpdateEngineList();
UpdateProjectList();
UpdateToolsList();
UpdateAddonsList();
UpdateNavigationBar();
UpdateLastSelectedProject();
}
private void UpdateNavigationBar() {
UpdateLogInStatus();
UpdateInfoNavigationBar();
}
private void toolStripStatusLabelRefresh_Click(object sender, EventArgs e) {
UpdateFormData();
}
public void FillBaseMenuItems() {
#region static content, do not edit
//creating groups (categores)
listViewGroupAddons = new ListViewGroup(Properties.translations.MenuCategories.catAddons);
ListViewGroup listViewGroupCompileDecpmpile = new ListViewGroup(Properties.translations.MenuCategories.catCompileDecompile);
ListViewGroup listViewGroupContent = new ListViewGroup(Properties.translations.MenuCategories.catContent);
ListViewGroup listViewGroupDocs = new ListViewGroup(Properties.translations.MenuCategories.catDocs);
ListViewGroup listViewGroupLandscape = new ListViewGroup(Properties.translations.MenuCategories.catLandscape);
ListViewGroup listViewGroupMisc = new ListViewGroup(Properties.translations.MenuCategories.catMisc);
ListViewGroup listViewGroupSettings = new ListViewGroup(Properties.translations.MenuCategories.catSettings);
ListViewGroup listViewGroupSupport = new ListViewGroup(Properties.translations.MenuCategories.catSupport);
ListViewGroup listViewGroupTextures = new ListViewGroup(Properties.translations.MenuCategories.catTextures);
listViewGroupTools = new ListViewGroup(Properties.translations.MenuCategories.catTools);
ListViewGroup listViewGroupUtils = new ListViewGroup(Properties.translations.MenuCategories.catUtils);
ListViewGroup listViewGroupWebLinks = new ListViewGroup(Properties.translations.MenuCategories.catWebLinks);
//add names to categories
listViewGroupSettings.Name = "ListViewGroupSettings";
listViewGroupWebLinks.Name = "ListViewGroupUrls";
#endregion
//creating permanent menu items
ListViewItem listViewItemSettings = new ListViewItem(Properties.translations.MenuItems.itmOpenSettings, 2);
ListViewItem listViewItemEditConfigurations = new ListViewItem(Properties.translations.MenuItems.itmEditConfigurations, 3);
ListViewItem listViewItemEditPlugins = new ListViewItem(Properties.translations.MenuItems.itmEditPlugins, 4);
ListViewItem listViewItemAbout = new ListViewItem(Properties.translations.MenuItems.itmAbout, 5);
ListViewItem listViewItemGitHubLink = new ListViewItem(Properties.translations.MenuItems.itmGitHubLink, 0);
ListViewItem listViewItemGitHubReport = new ListViewItem(Properties.translations.MenuItems.itmGitHubReport, 0);
//add item to category(group)
listViewItemSettings.Group = listViewGroupSettings;
listViewItemEditConfigurations.Group = listViewGroupSettings;
listViewItemEditPlugins.Group = listViewGroupSettings;
listViewItemAbout.Group = listViewGroupSupport;
listViewItemGitHubLink.Group = listViewGroupSupport;
listViewItemGitHubReport.Group = listViewGroupSupport;
//draw items and categories in forms
listView.Groups.AddRange(new ListViewGroup[] {
listViewGroupTools,
listViewGroupAddons,
listViewGroupCompileDecpmpile,
listViewGroupContent,
listViewGroupDocs,
listViewGroupLandscape,
listViewGroupMisc,
listViewGroupSettings,
listViewGroupSupport,
listViewGroupTextures,
listViewGroupUtils,
listViewGroupWebLinks,
});
listView.Items.AddRange(new ListViewItem[] {
listViewItemSettings,
listViewItemEditConfigurations,
listViewItemEditPlugins,
listViewItemGitHubLink,
listViewItemGitHubReport,
listViewItemAbout
});
}
private void UpdateEngineList() {
var dataProvider = new DataProvider();
Engines = dataProvider.Engines.Where(engine => SteamPathsUtil.GetSteamAppDataById(engine.Appid) != null).ToArray();
if (Engines != null && Engines.Length != 0) {
comboBoxEngine.Enabled = true;
comboBoxEngine.Items.Clear();
comboBoxEngine.Items.AddRange(Engines.Select(engine => engine.Name).ToArray());
comboBoxEngine.SelectedIndex = 0;
}
}
private void UpdateProjectList() {
if (Engines.Length == 0) {
comboBoxProjects.Enabled = false;
comboBoxProjects.Items.Clear();
return;
}
Projects = dataProvider.Projects;
var selectEngine = Engines[comboBoxEngine.SelectedIndex];
AvailableProjects = Projects.Where(project => project.Engine == selectEngine.Appid).ToArray();
if (AvailableProjects != null && AvailableProjects.Length != 0) {
comboBoxProjects.Enabled = true;
comboBoxProjects.Items.Clear();
comboBoxProjects.Items.AddRange(AvailableProjects.Select(project => project.Name).ToArray());
comboBoxProjects.SelectedIndex = 0;
}
else {
comboBoxProjects.Enabled = false;
comboBoxProjects.Items.Clear();
}
}
private void UpdateToolsList() {
var removeItem = new List<ListViewItem>();
foreach (ListViewItem item in listViewGroupTools.Items) {
removeItem.Add(item);
}
removeItem.ForEach(item => listView.Items.Remove(item));
if (SelectedEngine == null)
return;
var pathSelectedEngine = SteamPathsUtil.GetSteamAppManifestDataById(SelectedEngine.Appid)?.Path;
if (pathSelectedEngine != null) {
var pairPathIconTools = SelectedEngine.Tools
.Where(tool => File.Exists(Path.Combine(pathSelectedEngine, tool.Bin)))
.Select(tool => {
var keyByPath = Path.Combine(pathSelectedEngine, tool.Bin);
var icon = Icon.ExtractAssociatedIcon(Path.Combine(pathSelectedEngine, tool.Bin));
return new Pair(keyByPath, icon);
});
foreach (var pair in pairPathIconTools) {
listView.SmallImageList.Images.Add((string)pair.First, (Icon)pair.Second);
listView.LargeImageList.Images.Add((string)pair.First, (Icon)pair.Second);
}
}
var itemsTools = SelectedEngine.Tools
.Where(tool => File.Exists(Path.Combine(pathSelectedEngine, tool.Bin)))
.Select(tool => {
string keyByPath = null;
if (pathSelectedEngine != null)
keyByPath = Path.Combine(pathSelectedEngine, tool.Bin);
if (keyByPath == null) {
return new ListViewItem(tool.Name, listViewGroupTools);
}
else {
return new ListViewItem(tool.Name, keyByPath, listViewGroupTools);
}
}).ToArray();
listView.Items.AddRange(itemsTools);
var engineData = SteamPathsUtil.GetSteamAppManifestDataById(SelectedEngine.Appid);
var isAvailableProjectBySelectEngine = Projects.Any(project => project.Engine == SelectedEngine.Appid);
if (engineData != null && isAvailableProjectBySelectEngine) {
var enginePath = engineData.Path;
if (enginePath != null) {
var iconPathEngine = Path.Combine(enginePath, SelectedEngine.Bin);
var runProjectListViewItem = new ListViewItem(Properties.translations.MenuItems.itmRunProject, iconPathEngine, listViewGroupTools);
runProjectListViewItem.Tag = RUN_PROJECT_ID;
listView.Items.Add(runProjectListViewItem);
}
}
}
private void UpdateAddonsList() {
var removeItem = new List<ListViewItem>();
foreach (ListViewItem item in listViewGroupAddons.Items) {
removeItem.Add(item);
}
removeItem.ForEach(item => listView.Items.Remove(item));
if (SelectedEngine == null)
return;
var pathSelectedEngine = SteamPathsUtil.GetSteamAppManifestDataById(SelectedEngine.Appid)?.Path;
var addonsSelectedEngine = dataProvider.Addons.Where(a => a.Engines.Contains(SelectedEngine.Appid));
var pairPathIconTools = addonsSelectedEngine
.Where(addon => {
var path = addon.Bin;
return File.Exists(path);
})
.Select(addons => {
var keyByPath = addons.Bin;
var icon = Icon.ExtractAssociatedIcon(keyByPath);
return new Pair(keyByPath, icon);
});
foreach (var pair in pairPathIconTools) {
listView.SmallImageList.Images.Add((string)pair.First, (Icon)pair.Second);
listView.LargeImageList.Images.Add((string)pair.First, (Icon)pair.Second);
}
var itemsAddons = addonsSelectedEngine.Select(addons => {
string keyByPath = null;
if (pathSelectedEngine != null)
keyByPath = Path.Combine(pathSelectedEngine, addons.Bin);
if (keyByPath == null) {
return new ListViewItem(addons.Name, listViewGroupAddons);
}
else {
return new ListViewItem(addons.Name, keyByPath, listViewGroupAddons);
}
}).ToArray();
listView.Items.AddRange(itemsAddons);
}
private void UpdateInfoNavigationBar() {
var countAvailableEngines = dataProvider.Engines.Length;
var countAvailableProjects = dataProvider.Projects.Length;
var countAvailableAddons = dataProvider.Addons.Length;
toolStripStatusLabelEngines.Text = Properties.translations.MenuNavbar.menuStrEngines + $"{countAvailableEngines}";
toolStripStatusLabelAddons.Text = Properties.translations.MenuNavbar.menuStrAddons + $"{countAvailableAddons}";
}
private void UpdateLogInStatus() {
var steamData = SteamManager.SteamData;
if (steamData.SteamPid != 0) {
toolStripStatusLabelSteam.Image = Properties.Resources.checked_16;
toolStripStatusLabelSteam.Text = Properties.translations.MenuNavbar.menuStrSteam + Properties.translations.MenuNavbar.menuStrOnline;
toolStripStatusLabelSteam.ToolTipText = Properties.translations.MenuNavbar.menuStrSteam + $"PID: {steamData.SteamPid.ToString()}";
}
else {
toolStripStatusLabelSteam.Image = Properties.Resources.cancel_16;
toolStripStatusLabelSteam.ToolTipText = string.Empty;
toolStripStatusLabelSteam.Text = Properties.translations.MenuNavbar.menuStrSteam + Properties.translations.MenuNavbar.menuStrOffline;
}
if (steamData.UserNameSteam != null) {
toolStripStatusLabelLogin.Text = Properties.translations.MenuNavbar.menuStrLogin + $"{steamData.UserNameSteam}";
}
else {
toolStripStatusLabelLogin.Text = Properties.translations.MenuNavbar.menuStrLogin + Properties.translations.MenuNavbar.menuStrNone;
}
}
private void button_Launch_Click(object sender, EventArgs e) {
this.OpenSettings();
}
private void listView_MouseDoubleClick(object sender, MouseEventArgs e) {
var selectItem = listView.SelectedItems[0];
var selectItemText = selectItem.Text;
EnvUtils.PrepareVProject($"{SelectedProject?.Path ?? string.Empty}");
EnvUtils.PrepareSFMData($"{SelectedProject?.Path ?? string.Empty}");
if (selectItem.Group == listViewGroupTools) {
if (RUN_PROJECT_ID.Equals(selectItem.Tag) && SelectedProject != null) {
var pathEngineBin = Path.Combine(SteamPathsUtil.GetSteamAppManifestDataById(SelectedEngine.Appid).Path, SelectedEngine.Bin);
Process.Start(pathEngineBin, $"-steam -game \"{SelectedProject?.Path ?? string.Empty}\" {SelectedProject.Args}");
}
var selectedTool = SelectedEngine.Tools.FirstOrDefault(tool => tool.Name == selectItemText);
if (selectedTool != null) {
var selectedEnginePath = SteamPathsUtil.GetSteamAppManifestDataById(SelectedEngine.Appid)?.Path;
if (selectedEnginePath != null) {
var toolPath = Path.Combine(selectedEnginePath, selectedTool.Bin);
if (File.Exists(toolPath)) {
string finalArg = $"-steam {selectedTool.Args}";
if (!finalArg.Contains("-game")) {
finalArg += $"-game \"{SelectedProject?.Path ?? string.Empty}\"";
}
Process.Start(toolPath, finalArg);
}
else
MessageBox.Show($"\"{selectedTool.Name}\" {Properties.translations.MessageBoxes.msgTextNotFound}\n{toolPath}", Properties.translations.MessageBoxes.msgWarning, MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else {
DialogResult dialogResult = MessageBox.Show($"\"{SelectedEngine.Name}\" {Properties.translations.MessageBoxes.msgTextWithAppID} \"{SelectedEngine.Appid}\" {Properties.translations.MessageBoxes.msgTextNotInstalledInstall}", Properties.translations.MessageBoxes.msgWarning, MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (dialogResult == DialogResult.Yes) {
Process.Start($"steam://install/{SelectedEngine.Appid}");
}
else if (dialogResult == DialogResult.No) {
MessageBox.Show($"{Properties.translations.MessageBoxes.msgTextInstallationOf} \"{SelectedEngine.Name}\" {Properties.translations.MessageBoxes.msgTextWithAppID} \"{SelectedEngine.Appid}\" {Properties.translations.MessageBoxes.msgTextCancelled}", Properties.translations.MessageBoxes.msgInfo, MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
}
}
}
else if (selectItem.Group == listViewGroupAddons) {
var selectedAddons = dataProvider.Addons.FirstOrDefault(addon => addon.Name == selectItemText);
if (selectedAddons != null) {
var addonPath = Path.Combine(selectedAddons.Bin);
if (File.Exists(addonPath))
Process.Start(addonPath, selectedAddons.Args);
else
MessageBox.Show($"\"{selectedAddons.Name}\" {Properties.translations.MessageBoxes.msgTextNotFound}\n{addonPath}", Properties.translations.MessageBoxes.msgWarning, MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
else if (selectItemText == Properties.translations.MenuItems.itmOpenSettings) {
this.OpenSettings();
}
else if (selectItemText == Properties.translations.MenuItems.itmEditConfigurations) {
var frmProfiles = new FormProjects();
if (frmProfiles.ShowDialog() == DialogResult.OK) {
UpdateFormData();
}
}
else if (selectItemText == Properties.translations.MenuItems.itmEditPlugins) {
var frmPlugins = new FormAddons();
if (frmPlugins.ShowDialog() == DialogResult.OK) {
UpdateFormData();
}
}
else if (selectItemText == Properties.translations.MenuItems.itmAbout) {
var frmAbout = new FormAbout();
frmAbout.ShowDialog();
}
else if (selectItemText == Properties.translations.MenuItems.itmGitHubLink) {
Process.Start("https://github.com/EpicMorg/UniversalValveToolbox");
}
else if (selectItemText == Properties.translations.MenuItems.itmGitHubReport) {
Process.Start("https://github.com/EpicMorg/UniversalValveToolbox/issues/new/choose");
}
}
private void OpenSettings() {
var dataManager = new DataProvider();
var settingsDto = dataManager.Settings;
var languageProvider = new LanguageProvider();
var settingsModel = new SettingsViewModel(settingsDto, languageProvider);
var frmSettings = new FormSettings(settingsModel);
if (frmSettings.ShowDialog() == DialogResult.OK) {
dataManager.Settings = settingsDto;
Application.Restart();
}
}
private void FormMain_FormClosing(object sender, FormClosingEventArgs e) {
SaveLastSelectedProject();
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,204 @@
using System;
namespace UniversalValveToolbox {
partial class FormProjects {
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing) {
if (disposing && (components != null)) {
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent() {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormProjects));
this.comboBox_Mod = new System.Windows.Forms.ComboBox();
this.buttonOK = new System.Windows.Forms.Button();
this.buttonCancel = new System.Windows.Forms.Button();
this.buttonNew = new System.Windows.Forms.Button();
this.buttonRemove = new System.Windows.Forms.Button();
this.buttonBrowse = new System.Windows.Forms.Button();
this.textBoxPath = new System.Windows.Forms.TextBox();
this.textBoxName = new System.Windows.Forms.TextBox();
this.comboBoxEngine = new System.Windows.Forms.ComboBox();
this.labelPath = new System.Windows.Forms.Label();
this.labelName = new System.Windows.Forms.Label();
this.labelLinkedEngine = new System.Windows.Forms.Label();
this.labelAddon = new System.Windows.Forms.Label();
this.labelDivider = new System.Windows.Forms.Label();
this.buttonApply = new System.Windows.Forms.Button();
this.textBoxArgs = new System.Windows.Forms.TextBox();
this.labelArgs = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// comboBox_Mod
//
resources.ApplyResources(this.comboBox_Mod, "comboBox_Mod");
this.comboBox_Mod.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox_Mod.FormattingEnabled = true;
this.comboBox_Mod.Name = "comboBox_Mod";
this.comboBox_Mod.SelectedIndexChanged += new System.EventHandler(this.comboBox_Mod_SelectedIndexChanged);
//
// buttonOK
//
resources.ApplyResources(this.buttonOK, "buttonOK");
this.buttonOK.DialogResult = System.Windows.Forms.DialogResult.OK;
this.buttonOK.Name = "buttonOK";
this.buttonOK.UseVisualStyleBackColor = true;
this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
//
// buttonCancel
//
resources.ApplyResources(this.buttonCancel, "buttonCancel");
this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.buttonCancel.Name = "buttonCancel";
this.buttonCancel.UseVisualStyleBackColor = true;
this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
//
// buttonNew
//
resources.ApplyResources(this.buttonNew, "buttonNew");
this.buttonNew.Name = "buttonNew";
this.buttonNew.UseVisualStyleBackColor = true;
this.buttonNew.Click += new System.EventHandler(this.buttonNew_Click);
//
// buttonRemove
//
resources.ApplyResources(this.buttonRemove, "buttonRemove");
this.buttonRemove.Name = "buttonRemove";
this.buttonRemove.UseVisualStyleBackColor = true;
this.buttonRemove.Click += new System.EventHandler(this.buttonRemove_Click);
//
// buttonBrowse
//
resources.ApplyResources(this.buttonBrowse, "buttonBrowse");
this.buttonBrowse.Name = "buttonBrowse";
this.buttonBrowse.UseVisualStyleBackColor = true;
this.buttonBrowse.Click += new System.EventHandler(this.buttonBrowse_Click);
//
// textBoxPath
//
resources.ApplyResources(this.textBoxPath, "textBoxPath");
this.textBoxPath.Name = "textBoxPath";
//
// textBoxName
//
resources.ApplyResources(this.textBoxName, "textBoxName");
this.textBoxName.Name = "textBoxName";
//
// comboBoxEngine
//
resources.ApplyResources(this.comboBoxEngine, "comboBoxEngine");
this.comboBoxEngine.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBoxEngine.FormattingEnabled = true;
this.comboBoxEngine.Name = "comboBoxEngine";
this.comboBoxEngine.SelectedIndexChanged += new System.EventHandler(this.comboBoxEngine_SelectedIndexChanged);
//
// labelPath
//
resources.ApplyResources(this.labelPath, "labelPath");
this.labelPath.Name = "labelPath";
//
// labelName
//
resources.ApplyResources(this.labelName, "labelName");
this.labelName.Name = "labelName";
//
// labelLinkedEngine
//
resources.ApplyResources(this.labelLinkedEngine, "labelLinkedEngine");
this.labelLinkedEngine.Name = "labelLinkedEngine";
//
// labelAddon
//
resources.ApplyResources(this.labelAddon, "labelAddon");
this.labelAddon.Name = "labelAddon";
//
// labelDivider
//
resources.ApplyResources(this.labelDivider, "labelDivider");
this.labelDivider.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.labelDivider.Name = "labelDivider";
//
// buttonApply
//
resources.ApplyResources(this.buttonApply, "buttonApply");
this.buttonApply.Name = "buttonApply";
this.buttonApply.UseVisualStyleBackColor = true;
this.buttonApply.Click += new System.EventHandler(this.buttonApply_Click);
//
// textBoxArgs
//
resources.ApplyResources(this.textBoxArgs, "textBoxArgs");
this.textBoxArgs.Name = "textBoxArgs";
//
// labelArgs
//
resources.ApplyResources(this.labelArgs, "labelArgs");
this.labelArgs.Name = "labelArgs";
//
// FormProjects
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.textBoxArgs);
this.Controls.Add(this.labelArgs);
this.Controls.Add(this.buttonApply);
this.Controls.Add(this.labelDivider);
this.Controls.Add(this.labelAddon);
this.Controls.Add(this.buttonBrowse);
this.Controls.Add(this.textBoxPath);
this.Controls.Add(this.textBoxName);
this.Controls.Add(this.comboBoxEngine);
this.Controls.Add(this.labelPath);
this.Controls.Add(this.labelName);
this.Controls.Add(this.labelLinkedEngine);
this.Controls.Add(this.buttonRemove);
this.Controls.Add(this.buttonNew);
this.Controls.Add(this.buttonCancel);
this.Controls.Add(this.buttonOK);
this.Controls.Add(this.comboBox_Mod);
this.Name = "FormProjects";
this.ShowInTaskbar = false;
this.Load += new System.EventHandler(this.FormEditProfile_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.ComboBox comboBox_Mod;
private System.Windows.Forms.Button buttonOK;
private System.Windows.Forms.Button buttonCancel;
private System.Windows.Forms.Button buttonNew;
private System.Windows.Forms.Button buttonRemove;
private System.Windows.Forms.Button buttonBrowse;
private System.Windows.Forms.TextBox textBoxPath;
private System.Windows.Forms.TextBox textBoxName;
private System.Windows.Forms.ComboBox comboBoxEngine;
private System.Windows.Forms.Label labelPath;
private System.Windows.Forms.Label labelName;
private System.Windows.Forms.Label labelLinkedEngine;
private System.Windows.Forms.Label labelAddon;
private System.Windows.Forms.Label labelDivider;
private System.Windows.Forms.Button buttonApply;
private System.Windows.Forms.TextBox textBoxArgs;
private System.Windows.Forms.Label labelArgs;
}
}

View File

@ -0,0 +1,148 @@
using EpicMorg.SteamPathsLib;
using kasthack.binding.wf;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using UniversalValveToolbox.Model.Dto;
using UniversalValveToolbox.Model.Provider;
using UniversalValveToolbox.Model.ViewModel;
using UniversalValveToolbox.Utils;
namespace UniversalValveToolbox {
public partial class FormProjects : Form {
private bool needRestart = false;
private DataProvider dataProvider = new DataProvider();
private FormProjectViewModel model;
public FormProjects() {
InitializeComponent();
model = new FormProjectViewModel(dataProvider.Projects, dataProvider.Engines.Where(engine => SteamPathsUtil.GetSteamAppDataById(engine.Appid) != null).ToArray());
UpdateComboBoxProject();
UpdateComboBoxEngine();
textBoxName.Bind(a => a.Text, model, a => a.SelectProject.Name);
textBoxPath.Bind(a => a.Text, model, a => a.SelectProject.Path);
textBoxArgs.Bind(a => a.Text, model, a => a.SelectProject.Args);
comboBox_Mod.Bind(a => a.SelectedIndex, model, a => a.SelectProjectIndex);
comboBoxEngine.Bind(a => a.SelectedIndex, model, a => a.SelectEngineIndex);
}
private void Model_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) {
UpdateComboBoxEngine();
}
private void UpdateComboBoxProject() {
if (model.Projects.Length == 0) {
New();
} else {
comboBox_Mod.Items.Clear();
comboBox_Mod.Items.AddRange(model.Projects);
comboBox_Mod.SelectedIndex = model.SelectProjectIndex;
}
}
private void UpdateComboBoxEngine() {
comboBoxEngine.Items.Clear();
comboBoxEngine.Items.AddRange(model.Engines);
comboBoxEngine.SelectedIndex = model.SelectEngineIndex;
}
private void FormEditProfile_Load(object sender, EventArgs e) {
}
private void buttonCancel_Click(object sender, EventArgs e) {
if (needRestart) {
DialogResult = DialogResult.OK;
}
Close();
}
private void buttonBrowse_Click(object sender, EventArgs e) {
string folderpath = "";
FolderBrowserDialog fbd = new FolderBrowserDialog {
ShowNewFolderButton = false,
RootFolder = Environment.SpecialFolder.MyComputer
};
DialogResult dr = fbd.ShowDialog();
if (dr == DialogResult.OK) {
folderpath = fbd.SelectedPath;
}
if (folderpath != "") {
textBoxPath.Text = folderpath;
}
}
private void comboBoxEngine_SelectedIndexChanged(object sender, EventArgs e) {
if (model.SelectProject != null && comboBoxEngine.SelectedItem != null)
model.SelectProject.Engine = ((EngineDtoModel)comboBoxEngine.SelectedItem).Appid;
}
private void comboBox_Mod_SelectedIndexChanged(object sender, EventArgs e) {
model.SelectProjectIndex = comboBox_Mod.SelectedIndex;
}
private void Remove() {
var newProjectList = new List<ProjectDtoModel>(model.Projects);
newProjectList.RemoveAt(model.SelectProjectIndex);
model.Projects = newProjectList.ToArray();
UpdateComboBoxProject();
}
private void New() {
var newProject = CreateNewEmptyProject();
var newProjectList = new List<ProjectDtoModel>(model.Projects);
newProjectList.Insert(0, newProject);
model.Projects = newProjectList.ToArray();
UpdateComboBoxProject();
}
private ProjectDtoModel CreateNewEmptyProject() {
var newProject = new ProjectDtoModel();
newProject.Name = Properties.translations.VarStrings.strNewProject;
return newProject;
}
private void Save() {
JsonFileUtil.SaveValues(DataProvider.ProjectsPath, "json", model.Projects.ToList());
}
private void buttonOK_Click(object sender, EventArgs e) {
Save();
Close();
}
private void buttonApply_Click(object sender, EventArgs e) {
Save();
needRestart = true;
}
private void buttonNew_Click(object sender, EventArgs e) {
New();
}
private void buttonRemove_Click(object sender, EventArgs e) {
Remove();
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,112 @@
namespace UniversalValveToolbox {
partial class FormSettings {
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing) {
if (disposing && (components != null)) {
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent() {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormSettings));
this.labelDivider = new System.Windows.Forms.Label();
this.buttonCancel = new System.Windows.Forms.Button();
this.buttonOK = new System.Windows.Forms.Button();
this.labelLang = new System.Windows.Forms.Label();
this.comboBoxLang = new System.Windows.Forms.ComboBox();
this.labelTranslationBy = new System.Windows.Forms.Label();
this.labelTranslationAthor = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// labelDivider
//
resources.ApplyResources(this.labelDivider, "labelDivider");
this.labelDivider.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.labelDivider.Name = "labelDivider";
//
// buttonCancel
//
resources.ApplyResources(this.buttonCancel, "buttonCancel");
this.buttonCancel.Name = "buttonCancel";
this.buttonCancel.UseVisualStyleBackColor = true;
this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click);
//
// buttonOK
//
resources.ApplyResources(this.buttonOK, "buttonOK");
this.buttonOK.DialogResult = System.Windows.Forms.DialogResult.OK;
this.buttonOK.Name = "buttonOK";
this.buttonOK.UseVisualStyleBackColor = true;
//
// labelLang
//
resources.ApplyResources(this.labelLang, "labelLang");
this.labelLang.Name = "labelLang";
//
// comboBoxLang
//
resources.ApplyResources(this.comboBoxLang, "comboBoxLang");
this.comboBoxLang.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBoxLang.FormattingEnabled = true;
this.comboBoxLang.Items.AddRange(new object[] {
resources.GetString("comboBoxLang.Items")});
this.comboBoxLang.Name = "comboBoxLang";
//
// labelTranslationBy
//
resources.ApplyResources(this.labelTranslationBy, "labelTranslationBy");
this.labelTranslationBy.Name = "labelTranslationBy";
//
// labelTranslationAthor
//
this.labelTranslationAthor.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
resources.ApplyResources(this.labelTranslationAthor, "labelTranslationAthor");
this.labelTranslationAthor.Name = "labelTranslationAthor";
//
// FormSettings
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.labelTranslationAthor);
this.Controls.Add(this.labelTranslationBy);
this.Controls.Add(this.comboBoxLang);
this.Controls.Add(this.labelLang);
this.Controls.Add(this.labelDivider);
this.Controls.Add(this.buttonCancel);
this.Controls.Add(this.buttonOK);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "FormSettings";
this.ShowInTaskbar = false;
this.Load += new System.EventHandler(this.FormSettings_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label labelDivider;
private System.Windows.Forms.Button buttonCancel;
private System.Windows.Forms.Button buttonOK;
private System.Windows.Forms.Label labelLang;
private System.Windows.Forms.ComboBox comboBoxLang;
private System.Windows.Forms.Label labelTranslationBy;
private System.Windows.Forms.Label labelTranslationAthor;
}
}

View File

@ -0,0 +1,26 @@
using kasthack.binding.wf;
using System;
using System.Threading;
using System.Windows.Forms;
using UniversalValveToolbox.Model.ViewModel;
namespace UniversalValveToolbox {
public partial class FormSettings : Form {
public FormSettings(SettingsViewModel settings) {
InitializeComponent();
comboBoxLang.Items.Clear();
comboBoxLang.Items.AddRange(settings.Languages);
comboBoxLang.Bind(a => a.SelectedIndex, settings, a => a.SelectedLanguageIndex);
}
private void buttonCancel_Click(object sender, EventArgs e) {
Close();
}
private void FormSettings_Load(object sender, EventArgs e) {
labelTranslationAthor.Text = Properties.translations.LangDict.strLangAuthor;
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace UniversalValveToolbox.UI.View {
public class IconComboBox: ComboBox {
public IconComboBox() {
DrawMode = DrawMode.OwnerDrawFixed;
DropDownStyle = ComboBoxStyle.DropDownList;
}
protected override void OnDrawItem(DrawItemEventArgs e) {
e.DrawBackground();
e.DrawFocusRectangle();
if (e.Index >= 0 && e.Index < Items.Count) {
var item = (IconComboBoxItem)Items[e.Index];
e.Graphics.DrawIcon(item.Icon, e.Bounds.Left, e.Bounds.Top);
e.Graphics.DrawString(item.Title, e.Font, new SolidBrush(e.ForeColor), e.Bounds.Left + item.Icon.Width, e.Bounds.Top + 2);
}
base.OnDrawItem(e);
}
}
}

View File

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace UniversalValveToolbox.UI.View {
class IconComboBoxItem {
public Icon Icon;
public string Title;
}
}

View File

@ -0,0 +1,355 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{DE66895F-7317-45D3-B5CA-292253CE086A}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>UniversalValveToolbox</RootNamespace>
<AssemblyName>UniversalValveToolbox</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>valve.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Web" />
<Reference Include="System.Xaml" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<PackageReference Include="EpicMorg.SteamPathsLib" Version="1.1.0.5" />
<PackageReference Include="kasthack.binding.wf">
<Version>1.2.26</Version>
</PackageReference>
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
<Reference Include="UIAutomationProvider" />
<Reference Include="WindowsBase" />
<Reference Include="WindowsFormsIntegration" />
</ItemGroup>
<ItemGroup>
<Compile Include="Model\ViewModel\FormAddonViewModel.cs" />
<Compile Include="Model\ViewModel\FormProjectViewModel.cs" />
<Compile Include="Model\ViewModel\SteamDataViewModel.cs" />
<Compile Include="Properties\translations\LangDict.Designer.cs">
<DependentUpon>LangDict.resx</DependentUpon>
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
</Compile>
<Compile Include="Properties\translations\LangDict.ru.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>LangDict.ru.resx</DependentUpon>
</Compile>
<Compile Include="Properties\translations\MenuNavbar.ru.Designer.cs">
<DependentUpon>MenuNavbar.ru.resx</DependentUpon>
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
</Compile>
<Compile Include="Properties\translations\MenuNavbar.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>MenuNavbar.resx</DependentUpon>
</Compile>
<Compile Include="Properties\translations\VarStrings.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>VarStrings.resx</DependentUpon>
</Compile>
<Compile Include="UI\FormAbout.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UI\FormAbout.Designer.cs">
<DependentUpon>FormAbout.cs</DependentUpon>
</Compile>
<Compile Include="UI\FormAddons.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UI\FormAddons.Designer.cs">
<DependentUpon>FormAddons.cs</DependentUpon>
</Compile>
<Compile Include="UI\FormProjects.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UI\FormProjects.Designer.cs">
<DependentUpon>FormProjects.cs</DependentUpon>
</Compile>
<Compile Include="UI\FormMain.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UI\FormMain.Designer.cs">
<DependentUpon>FormMain.cs</DependentUpon>
</Compile>
<Compile Include="UI\FormSettings.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UI\FormSettings.Designer.cs">
<DependentUpon>FormSettings.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\translations\MenuCategories.Designer.cs">
<DependentUpon>MenuCategories.resx</DependentUpon>
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
</Compile>
<Compile Include="Properties\translations\MenuItems.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>MenuItems.resx</DependentUpon>
</Compile>
<Compile Include="Properties\translations\MenuCategories.ru.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>MenuCategories.ru.resx</DependentUpon>
</Compile>
<Compile Include="Properties\translations\MessageBoxes.ru.Designer.cs">
<DependentUpon>MessageBoxes.ru.resx</DependentUpon>
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
</Compile>
<Compile Include="Properties\translations\MessageBoxes.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>MessageBoxes.resx</DependentUpon>
</Compile>
<Compile Include="Model\Dto\AddonDtoModel.cs" />
<Compile Include="Model\Provider\DataProvider.cs" />
<Compile Include="Model\Dto\EngineDtoModel.cs" />
<Compile Include="Base\DtoModel.cs" />
<Compile Include="Utils\EnvUtils.cs" />
<Compile Include="Utils\JsonFileUtil.cs" />
<Compile Include="Utils\LanguageManager.cs" />
<Compile Include="Model\Dto\ToolDtoModel.cs" />
<Compile Include="Model\ViewModel\SettingsViewModel.cs" />
<Compile Include="Model\Dto\SettingsDtoModel.cs" />
<Compile Include="Model\Provider\LanguageProvider.cs" />
<Compile Include="Utils\SteamManager.cs" />
<Compile Include="Utils\VersionHelper.cs" />
<Compile Include="Model\Dto\ProjectDtoModel.cs" />
<EmbeddedResource Include="Properties\translations\LangDict.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>LangDict.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="Properties\translations\LangDict.ru.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>LangDict.ru.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="Properties\translations\MenuNavbar.ru.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>MenuNavbar.ru.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="Properties\translations\MenuNavbar.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>MenuNavbar.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="Properties\translations\VarStrings.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>VarStrings.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="Properties\translations\VarStrings.ru.resx" />
<EmbeddedResource Include="UI\FormAbout.resx">
<DependentUpon>FormAbout.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\FormAbout.ru.resx">
<DependentUpon>FormAbout.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\FormAddons.resx">
<DependentUpon>FormAddons.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\FormAddons.ru.resx">
<DependentUpon>FormAddons.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\FormMain.ru.resx">
<DependentUpon>FormMain.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\FormProjects.resx">
<DependentUpon>FormProjects.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\FormMain.resx">
<DependentUpon>FormMain.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\FormProjects.ru.resx">
<DependentUpon>FormProjects.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\FormSettings.resx">
<DependentUpon>FormSettings.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<EmbeddedResource Include="Properties\translations\MenuCategories.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>MenuCategories.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="Properties\translations\MenuItems.ru.resx" />
<EmbeddedResource Include="Properties\translations\MenuItems.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>MenuItems.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="Properties\translations\MenuCategories.ru.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>MenuCategories.ru.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="Properties\translations\MessageBoxes.ru.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>MessageBoxes.ru.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="Properties\translations\MessageBoxes.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>MessageBoxes.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="UI\FormSettings.ru.resx">
<DependentUpon>FormSettings.cs</DependentUpon>
</EmbeddedResource>
<None Include="json\addons\myOtherProgram.json" />
<None Include="json\addons\myProgram.json" />
<None Include="json\engines\1840_sfm.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\engines\440_tf2.sdk.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\engines\399120_prospekt.sdk.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\engines\211_source.sdk.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\engines\630_alienswarm.sdk.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\engines\620_portal2.sdk.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\engines\400_portal.sdk.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\engines\550_l4d2.sdk.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\engines\500_l4d.sdk.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\engines\280_hl1source.sdk.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\engines\360_hl1sourcedeathmatch.sdk.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\engines\290930_hl2update.sdk.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\engines\340_hl2lc.sdk.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\engines\420_hl2ep2.sdk.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\engines\380_hl2episodic.sdk.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\engines\320_hl2dm.sdk.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\engines\220_hl2.sdk.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\engines\4000_garrysmod.sdk.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\engines\570_dota2sdk.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\engines\300_dod.sdk.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\engines\280740_aperturetag.sdk.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\engines\240_css.sdk.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\engines\730_csgo.sdk.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\engines\362890_bmssdk.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\engines\496450_jack.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\engines\254430_hl.sdk.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\engines\243750_ssdk2013mp.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\engines\243730_ssdk2013sp.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
<None Include="json\projects\test project.json" />
<None Include="json\settings.json" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="Resources\cancel_16.png" />
<None Include="Resources\checked_16.png" />
<None Include="Resources\human_16.png" />
<None Include="Resources\refresh_16.png" />
<None Include="Resources\valve_64.png" />
<None Include="Resources\info_16.png" />
<None Include="Resources\plug-silhouette_16.png" />
<None Include="Resources\run_16.png" />
<Content Include="valve.ico" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@ -0,0 +1,43 @@
using EpicMorg.SteamPathsLib;
using System;
using System.IO;
namespace UniversalValveToolbox.Utils {
internal static class EnvUtils {
public static void PrepareVProject(string data) {
Environment.SetEnvironmentVariable("VProject", data, EnvironmentVariableTarget.User);
}
public static void PrepareVMod(string data) {
Environment.SetEnvironmentVariable("VMod", data, EnvironmentVariableTarget.User);
}
public static void PrepareVGame(string data) {
Environment.SetEnvironmentVariable("VGame", data, EnvironmentVariableTarget.User);
}
public static void PrepareVContent(string data) {
Environment.SetEnvironmentVariable("VContent", data, EnvironmentVariableTarget.User);
}
public static void PrepareVTools(string data) {
Environment.SetEnvironmentVariable("VTools", data, EnvironmentVariableTarget.User);
}
public static void PrepareSFMData(string pathProject) {
if (pathProject == null || pathProject.Length == 0)
return;
var SFMpath = SteamPathsUtil.GetSteamAppManifestDataById(1840)?.Path;
if (SFMpath == null)
return;
PrepareVMod(new DirectoryInfo(pathProject).Name);
PrepareVProject(pathProject);
PrepareVContent(Path.Combine(SFMpath, "content"));
PrepareVGame(Path.Combine(SFMpath, "game"));
PrepareVTools(Path.Combine(SFMpath, "game", "sdktools"));
}
}
}

View File

@ -0,0 +1,65 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace UniversalValveToolbox.Utils {
static class JsonFileUtil {
public static T ReadValue<T>(string path) {
try {
var result = JsonConvert.DeserializeObject<T>(File.ReadAllText(path));
return result;
} catch (Exception) {
return default(T);
}
}
public static T ReadValue<T>(string path, T fileDefaultValue) {
try {
var result = JsonConvert.DeserializeObject<T>(File.ReadAllText(path));
return result;
} catch (Exception) {
WriteValue(path, fileDefaultValue);
return fileDefaultValue;
}
}
public static T[] ReadValues<T>(string directoryPath) {
if (!Directory.Exists(directoryPath)) {
Directory.CreateDirectory(directoryPath);
}
return Directory.GetFiles(directoryPath, "*").Select(path => ReadValue<T>(path)).Where(value => value != null).ToArray();
}
public static List<T> ReadListValues<T>(string directoryPath) => new List<T>(ReadValues<T>(directoryPath));
public static void WriteValue<T>(string path, T value) => File.WriteAllText(path, JsonConvert.SerializeObject(value, Formatting.Indented));
public static void SaveValues<T>(string folderPath, string fileExtension, List<T> values) {
DirectoryInfo di = new DirectoryInfo(folderPath);
foreach (FileInfo file in di.GetFiles()) {
file.Delete();
}
foreach (DirectoryInfo dir in di.GetDirectories()) {
dir.Delete(true);
}
foreach (var item in values) {
StringBuilder fileName = new StringBuilder(item.ToString().ToLower());
foreach (char c in System.IO.Path.GetInvalidFileNameChars()) {
fileName = fileName.Replace(c, '_');
}
var path = Path.Combine(folderPath, $"{fileName}.{fileExtension}");
File.WriteAllText(path, JsonConvert.SerializeObject(item, Formatting.Indented));
}
}
}
}

View File

@ -0,0 +1,18 @@
using System.Globalization;
using System.Threading;
using System.Windows.Forms;
namespace UniversalValveToolbox.Utils {
static class LanguageManager {
public static void UpdateLanguage(string newLanguage, bool restart = false) {
var currThread = Thread.CurrentThread;
var newCultureInfo = new CultureInfo(newLanguage);
currThread.CurrentCulture = currThread.CurrentUICulture = newCultureInfo;
if (restart) {
Application.Restart();
}
}
}
}

View File

@ -0,0 +1,16 @@
using EpicMorg.SteamPathsLib;
using UniversalValveToolbox.Model.ViewModel;
namespace UniversalValveToolbox.Utils {
static class SteamManager {
public static SteamDataViewModel SteamData {
get {
var result = new SteamDataViewModel();
result.SteamPid = SteamPathsUtil.GetActiveProcessSteamData()?.PID ?? 0;
result.UserNameSteam = SteamPathsUtil.GetSteamData()?.LastGameNameUsed ?? null;
return result;
}
}
}
}

View File

@ -0,0 +1,65 @@
using System;
using System.Reflection;
namespace UniversalValveToolbox.Utils {
internal static class VersionHelper {
public static string AssemblyVersion {
get {
return " " + Assembly.GetExecutingAssembly().GetName().Version.ToString();
}
}
public static string AssemblyTitle {
get {
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
if (attributes.Length > 0) {
AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0];
if (titleAttribute.Title != "") {
return titleAttribute.Title;
}
}
return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
}
}
public static string AssemblyDescription {
get {
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false);
if (attributes.Length == 0) {
return "";
}
return ((AssemblyDescriptionAttribute)attributes[0]).Description;
}
}
public static string AssemblyProduct {
get {
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute), false);
if (attributes.Length == 0) {
return "";
}
return ((AssemblyProductAttribute)attributes[0]).Product;
}
}
public static string AssemblyCopyright {
get {
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
if (attributes.Length == 0) {
return "";
}
return ((AssemblyCopyrightAttribute)attributes[0]).Copyright + " " + DateTime.Now.Year.ToString();
}
}
public static string AssemblyCompany {
get {
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCompanyAttribute), false);
if (attributes.Length == 0) {
return "";
}
return ((AssemblyCompanyAttribute)attributes[0]).Company;
}
}
}
}

View File

@ -0,0 +1,7 @@
{
"engines": [ 243730, 10 ], //linked avalible engine(s) by id
"name": "My another Awesome Program",
"category": "catUtils", //link program to one of category
"bin": "C:\\program123.exe", //full path
"args": ""
}

View File

@ -0,0 +1,7 @@
{
"engines": [ 243730 ], //linked avalible engine(s) by id
"name": "My Awesome Program",
"category": "catCompileDecpmpile", //link program to one of category
"bin": "C:\\program.exe", //full path
"args": "-dev"
}

View File

@ -0,0 +1,37 @@
{
"appid": 1840,
"name": "Source Filmmaker",
"bin": "game//sfm.exe",
"tools": [
{
"args": "-steam",
"bin": "game//bin//qsdklauncher.exe",
"name": "SDK Launcher"
},
{
"args": "",
"bin": "game//bin//hammer.exe",
"name": "Valve Hammer Editor"
},
{
"args": "",
"bin": "game//bin//hlmv.exe",
"name": "Half-Life Model Viewer"
},
{
"args": "",
"bin": "game//bin//hlfaceposer.exe",
"name": "Half-Life FacePoser"
},
{
"args": "",
"bin": "game//bin//qc_eyes.exe",
"name": "QC Eyes"
},
{
"args": "-steam",
"bin": "game//sfm.exe",
"name": "Run SFM"
}
]
}

View File

@ -0,0 +1,12 @@
{
"appid": 211,
"name": "Source SDK 2006 2007 2009 (legacy)",
"bin": "swarm.exe",
"tools": [
{
"args": "-steam -game launcher",
"bin": "bin//SDKLauncher.exe",
"name": "Authoring Tools Launcher"
}
]
}

View File

@ -0,0 +1,37 @@
{
"appid": 220,
"name": "Half-Life 2: SDK",
"bin": "hl2.exe",
"tools": [
{
"args": "",
"bin": "bin//hammer.exe",
"name": "Valve Hammer Editor"
},
{
"args": "",
"bin": "bin//hlmv.exe",
"name": "Half-Life Model Viewer"
},
{
"args": "",
"bin": "bin//hlfaceposer.exe",
"name": "Half-Life FacePoser"
},
{
"args": "",
"bin": "bin//qc_eyes.exe",
"name": "QC Eyes"
},
{
"args": "-tools -steam -game hl2",
"bin": "hl2.exe",
"name": "Engine Tools"
},
{
"args": "-steam -game hl2",
"bin": "hl2.exe",
"name": "Run Game"
}
]
}

View File

@ -0,0 +1,37 @@
{
"appid": 240,
"name": "Counter-Strike Source: SDK",
"bin": "hl2.exe",
"tools": [
{
"args": "",
"bin": "bin//hammer.exe",
"name": "Valve Hammer Editor"
},
{
"args": "",
"bin": "bin//hlmv.exe",
"name": "Half-Life Model Viewer"
},
{
"args": "",
"bin": "bin//hlfaceposer.exe",
"name": "Half-Life FacePoser"
},
{
"args": "",
"bin": "bin//qc_eyes.exe",
"name": "QC Eyes"
},
{
"args": "-tools -steam -game cstrike",
"bin": "hl2.exe",
"name": "Engine Tools"
},
{
"args": "-steam -game cstrike",
"bin": "hl2.exe",
"name": "Run Game"
}
]
}

View File

@ -0,0 +1,32 @@
{
"appid": 243730,
"name": "Source SDK Base 2013 (SP) Singleplayer",
"bin": "hl2.exe",
"tools": [
{
"args": "",
"bin": "bin//hammer.exe",
"name": "Valve Hammer Editor"
},
{
"args": "",
"bin": "bin//hlmv.exe",
"name": "Half-Life Model Viewer"
},
{
"args": "",
"bin": "bin//hlfaceposer.exe",
"name": "Half-Life FacePoser"
},
{
"args": "",
"bin": "bin//qc_eyes.exe",
"name": "QC Eyes"
},
{
"args": "-tools",
"bin": "hl2.exe",
"name": "Engine Tools"
}
]
}

View File

@ -0,0 +1,32 @@
{
"appid": 243750,
"name": "Source SDK Base 2013 (MP) Multiplayer",
"bin": "hl2.exe",
"tools": [
{
"args": "",
"bin": "bin//hammer.exe",
"name": "Valve Hammer Editor"
},
{
"args": "",
"bin": "bin//hlmv.exe",
"name": "Half-Life Model Viewer"
},
{
"args": "",
"bin": "bin//hlfaceposer.exe",
"name": "Half-Life FacePoser"
},
{
"args": "",
"bin": "bin//qc_eyes.exe",
"name": "QC Eyes"
},
{
"args": "-tools",
"bin": "hl2.exe",
"name": "Engine Tools"
}
]
}

View File

@ -0,0 +1,12 @@
{
"appid": 254430,
"name": "Half-Life SDK",
"bin": "ReadMe.txt",
"tools": [
{
"args": "",
"bin": "Hammer Editor//hammer.exe",
"name": "Valve Hammer Editor"
}
]
}

View File

@ -0,0 +1,42 @@
{
"appid": 280740,
"name": "Aperture Tag: SDK",
"bin": "portal2.exe",
"tools": [
{
"args": "-steam -game aperturetag",
"bin": "bin//SDKLauncher.exe",
"name": "Authoring Tools Launcher"
},
{
"args": "-steam -game aperturetag",
"bin": "bin//p2map_publish.exe",
"name": "Aperture Tag Publish Tool"
},
{
"args": "",
"bin": "bin//hammer.exe",
"name": "Valve Hammer Editor"
},
{
"args": "",
"bin": "bin//hlmv.exe",
"name": "Half-Life Model Viewer"
},
{
"args": "",
"bin": "bin//hlfaceposer.exe",
"name": "Half-Life FacePoser"
},
{
"args": "",
"bin": "bin//qc_eyes.exe",
"name": "QC Eyes"
},
{
"args": "-steam -game aperturetag",
"bin": "portal2.exe",
"name": "Run Game"
}
]
}

View File

@ -0,0 +1,37 @@
{
"appid": 280,
"name": "Half-Life Source: SDK",
"bin": "hl2.exe",
"tools": [
{
"args": "",
"bin": "bin//hammer.exe",
"name": "Valve Hammer Editor"
},
{
"args": "",
"bin": "bin//hlmv.exe",
"name": "Half-Life Model Viewer"
},
{
"args": "",
"bin": "bin//hlfaceposer.exe",
"name": "Half-Life FacePoser"
},
{
"args": "",
"bin": "bin//qc_eyes.exe",
"name": "QC Eyes"
},
{
"args": "-tools -steam -game hl1",
"bin": "hl2.exe",
"name": "Engine Tools"
},
{
"args": "-steam -game hl1",
"bin": "hl2.exe",
"name": "Run Game"
}
]
}

View File

@ -0,0 +1,17 @@
{
"appid": 290930,
"name": "Half-Life 2 Update: SDK",
"bin": "hl2.exe",
"tools": [
{
"args": "-tools -steam -game hl2",
"bin": "hl2.exe",
"name": "Engine Tools"
},
{
"args": "-steam -game hl2",
"bin": "hl2.exe",
"name": "Run Game"
}
]
}

View File

@ -0,0 +1,37 @@
{
"appid": 300,
"name": "Day of Defeat Source: SDK",
"bin": "hl2.exe",
"tools": [
{
"args": "",
"bin": "bin//hammer.exe",
"name": "Valve Hammer Editor"
},
{
"args": "",
"bin": "bin//hlmv.exe",
"name": "Half-Life Model Viewer"
},
{
"args": "",
"bin": "bin//hlfaceposer.exe",
"name": "Half-Life FacePoser"
},
{
"args": "",
"bin": "bin//qc_eyes.exe",
"name": "QC Eyes"
},
{
"args": "-steam -game dod -tools",
"bin": "hl2.exe",
"name": "Engine Tools"
},
{
"args": "-steam -game dod",
"bin": "hl2.exe",
"name": "Run Game"
}
]
}

View File

@ -0,0 +1,37 @@
{
"appid": 320,
"name": "Half-Life 2 Deathmatch: SDK",
"bin": "hl2.exe",
"tools": [
{
"args": "",
"bin": "bin//hammer.exe",
"name": "Valve Hammer Editor"
},
{
"args": "",
"bin": "bin//hlmv.exe",
"name": "Half-Life Model Viewer"
},
{
"args": "",
"bin": "bin//hlfaceposer.exe",
"name": "Half-Life FacePoser"
},
{
"args": "",
"bin": "bin//qc_eyes.exe",
"name": "QC Eyes"
},
{
"args": "-tools -steam -game hl2mp",
"bin": "hl2.exe",
"name": "Engine Tools"
},
{
"args": "-steam -game hl2mp",
"bin": "hl2.exe",
"name": "Run Game"
}
]
}

View File

@ -0,0 +1,37 @@
{
"appid": 340,
"name": "Half-Life 2 Lost Coast: SDK",
"bin": "hl2.exe",
"tools": [
{
"args": "",
"bin": "bin//hammer.exe",
"name": "Valve Hammer Editor"
},
{
"args": "",
"bin": "bin//hlmv.exe",
"name": "Half-Life Model Viewer"
},
{
"args": "",
"bin": "bin//hlfaceposer.exe",
"name": "Half-Life FacePoser"
},
{
"args": "",
"bin": "bin//qc_eyes.exe",
"name": "QC Eyes"
},
{
"args": "-tools -steam -game lostcoast",
"bin": "hl2.exe",
"name": "Engine Tools"
},
{
"args": "-steam -game lostcoast",
"bin": "hl2.exe",
"name": "Run Game"
}
]
}

View File

@ -0,0 +1,37 @@
{
"appid": 360,
"name": "Half-Life Deathmatch Source: SDK",
"bin": "hl2.exe",
"tools": [
{
"args": "",
"bin": "bin//hammer.exe",
"name": "Valve Hammer Editor"
},
{
"args": "",
"bin": "bin//hlmv.exe",
"name": "Half-Life Model Viewer"
},
{
"args": "",
"bin": "bin//hlfaceposer.exe",
"name": "Half-Life FacePoser"
},
{
"args": "",
"bin": "bin//qc_eyes.exe",
"name": "QC Eyes"
},
{
"args": "-tools -steam -game hl1mp",
"bin": "hl2.exe",
"name": "Engine Tools"
},
{
"args": "-steam -game hl1mp",
"bin": "hl2.exe",
"name": "Run Game"
}
]
}

View File

@ -0,0 +1,37 @@
{
"appid": 362890,
"name": "Black Mesa: SDK",
"bin": "bms.exe",
"tools": [
{
"args": "",
"bin": "bin//hammer.exe",
"name": "Valve Hammer Editor"
},
{
"args": "",
"bin": "bin//hlmv.exe",
"name": "Half-Life Model Viewer"
},
{
"args": "",
"bin": "bin//hlfaceposer.exe",
"name": "Half-Life FacePoser"
},
{
"args": "",
"bin": "bin//qc_eyes.exe",
"name": "QC Eyes"
},
{
"args": "-steam -game bms",
"bin": "bin//blackmesa_publish.exe",
"name": "Black Mesa Publish Tool"
},
{
"args": "-steam -game bms",
"bin": "bms.exe",
"name": "Run Game"
}
]
}

View File

@ -0,0 +1,37 @@
{
"appid": 380,
"name": "Half-Life 2 Episode One: SDK",
"bin": "hl2.exe",
"tools": [
{
"args": "",
"bin": "bin//hammer.exe",
"name": "Valve Hammer Editor"
},
{
"args": "",
"bin": "bin//hlmv.exe",
"name": "Half-Life Model Viewer"
},
{
"args": "",
"bin": "bin//hlfaceposer.exe",
"name": "Half-Life FacePoser"
},
{
"args": "",
"bin": "bin//qc_eyes.exe",
"name": "QC Eyes"
},
{
"args": "-tools -steam -game episodic",
"bin": "hl2.exe",
"name": "Engine Tools"
},
{
"args": "-steam -game episodic",
"bin": "hl2.exe",
"name": "Run Game"
}
]
}

View File

@ -0,0 +1,37 @@
{
"appid": 399120,
"name": "Prospekt: SDK",
"bin": "hl2.exe",
"tools": [
{
"args": "",
"bin": "bin//hammer.exe",
"name": "Valve Hammer Editor"
},
{
"args": "",
"bin": "bin//hlmv.exe",
"name": "Half-Life Model Viewer"
},
{
"args": "",
"bin": "bin//hlfaceposer.exe",
"name": "Half-Life FacePoser"
},
{
"args": "",
"bin": "bin//qc_eyes.exe",
"name": "QC Eyes"
},
{
"args": "-tools -steam -game prospekt",
"bin": "hl2.exe",
"name": "Engine Tools"
},
{
"args": "-steam -game prospekt",
"bin": "hl2.exe",
"name": "Run Game"
}
]
}

View File

@ -0,0 +1,32 @@
{
"appid": 4000,
"name": "Garry's Mod: SDK",
"bin": "hl2.exe",
"tools": [
{
"args": "",
"bin": "bin//hammer.exe",
"name": "Valve Hammer Editor"
},
{
"args": "",
"bin": "bin//hlmv.exe",
"name": "Half-Life Model Viewer"
},
{
"args": "",
"bin": "bin//hlfaceposer.exe",
"name": "Half-Life FacePoser"
},
{
"args": "-tools -steam -game garrysmod",
"bin": "hl2.exe",
"name": "Engine Tools"
},
{
"args": "-steam -game garrysmod",
"bin": "hl2.exe",
"name": "Run Game"
}
]
}

View File

@ -0,0 +1,37 @@
{
"appid": 400,
"name": "Portal: SDK",
"bin": "hl2.exe",
"tools": [
{
"args": "",
"bin": "bin//hammer.exe",
"name": "Valve Hammer Editor"
},
{
"args": "",
"bin": "bin//hlmv.exe",
"name": "Half-Life Model Viewer"
},
{
"args": "",
"bin": "bin//hlfaceposer.exe",
"name": "Half-Life FacePoser"
},
{
"args": "",
"bin": "bin//qc_eyes.exe",
"name": "QC Eyes"
},
{
"args": "-tools -steam -game portal",
"bin": "hl2.exe",
"name": "Engine Tools"
},
{
"args": "-steam -game portal",
"bin": "hl2.exe",
"name": "Run Game"
}
]
}

Some files were not shown because too many files have changed in this diff Show More