public _AssetXML() { ReadAction = (self) => { CapyCSS.Language.Instance.LanguageType = Language; if (DataVersion != DATA_VERSION) { ControlTools.ShowErrorMessage(CapyCSS.Language.Instance["Help:DataVersionError"]); return; } if (BackGroundImagePath != null) { // 作業領域の背景イメージのパスをセットする BaseWorkCanvas.BackGrountImagePath = BackGroundImagePath; } while (ScriptWorkRecentList.Count >= 10) { ScriptWorkRecentList.RemoveAt(0); } self.scriptWorkRecentList = ScriptWorkRecentList; // 次回の為の初期化 self.AssetXML = new _AssetXML <CommandCanvasList>(self); }; }
/// <summary> /// 全体的な情報を保存します。 /// </summary> public void SaveInfo() { try { var writer = new StringWriter(); var serializer = new XmlSerializer(AssetXML.GetType()); var namespaces = new XmlSerializerNamespaces(); namespaces.Add(string.Empty, string.Empty); AssetXML.WriteAction(); serializer.Serialize(writer, AssetXML, namespaces); StreamWriter swriter = new StreamWriter(CAPYCSS_INFO_PATH, false); swriter.WriteLine(writer.ToString()); swriter.Close(); } catch (Exception ex) { ControlTools.ShowErrorMessage(ex.Message); } }
public _AssetXML() { ReadAction = (self) => { if (DataVersion != DATA_VERSION) { ControlTools.ShowErrorMessage(CapyCSS.Language.Instance["Help:DataVersionError"]); return; } self.attachVariableIds = RootFunc.AttachVariableIds; if (RootFunc.AttachFileName != null) { self.AttachParam = new AttachText(RootFunc.AttachFileName); } if (RootFunc.AttachVariableId != 0) { self.AttachParam = new AttachVariableId(RootFunc.AttachVariableId); } if (RootFunc.AssetValueType != null) { Type type = CbST.GetTypeEx(RootFunc.AssetValueType); self.SelectedVariableType[0] = type; self.SelectedVariableTypeName[0] = RootFunc.AssetValueType; } else { self.SelectedVariableTypes = RootFunc.AssetValueTypes.ToArray(); } self.IsReBuildMode = true; self.AssetFuncType = RootFunc.AssetFuncType; self.AssetType = RootFunc.AssetType; self.LinkConnectorControl.AssetXML = RootFunc.RootConnector; self.LinkConnectorControl.AssetXML.ReadAction?.Invoke(self.LinkConnectorControl); // 次回の為の初期化 self.AssetXML = new _AssetXML <MultiRootConnector>(self); }; }
/// <summary> /// 全体的な情報を読み込みます。 /// </summary> /// <param name="filename">保存ファイル名</param> public void LoadInfo(string filename) { try { StreamReader reader = new StreamReader(filename); XmlSerializer serializer = new XmlSerializer(AssetXML.GetType()); XmlDocument doc = new XmlDocument(); doc.PreserveWhitespace = true; doc.Load(reader); XmlNodeReader nodeReader = new XmlNodeReader(doc.DocumentElement); object data = (CommandCanvasList._AssetXML <CommandCanvasList>)serializer.Deserialize(nodeReader); AssetXML = (CommandCanvasList._AssetXML <CommandCanvasList>)data; reader.Close(); AssetXML.ReadAction(this); } catch (Exception ex) { ControlTools.ShowErrorMessage(ex.Message); } }
/// <summary> /// dllの選択を要求します。 /// </summary> /// <param name="filter">nullなら任意のdllを選択, それ以外はファイルを指定</param> /// <returns>null==失敗、それ以外は、選択されたdllファイル</returns> private string dllSelectionRequest(string filter = null) { if (filter != null) { // TODO フォルダを指定してもらいファイルのパスを特定してもらう string msg = string.Format(CapyCSS.Language.Instance["SYSTEM_ModuleControler_04"], filter); ControlTools.ShowErrorMessage(msg, DLL_MESSAGE_TITLE); return(null); // 失敗 } var dialog = new OpenFileDialog(); // ファイルの種類を設定 dialog.Filter = "DLL files (*.dll)|*.dll"; // ダイアログを表示する if (dialog.ShowDialog() == true) { return(dialog.FileName); } return(null); }
public _AssetXML() { ReadAction = (self) => { if (DataVersion != DATA_VERSION) { ControlTools.ShowErrorMessage(CapyCSS.Language.Instance["Help:DataVersionError"]); return; } self.AssetId = AssetId; self.EnabelGridLine = EnabelGridLine; self.EnableInfo = EnableInfo; self.ForcedDrawGridLine(); if (CanvasRenderTransform != null) { self.CanvasRenderTransform = new MatrixTransform(CanvasRenderTransform.Value); } // 次回の為の初期化 self.AssetXML = new _AssetXML <BaseWorkCanvas>(self); }; }
private bool AddLabel_MouseDown() { string selectedValue = (string)InportList.SelectedValue; if (selectedValue is null) { return(false); } if (selectedValue == "[ " + ImportMenu.DLL.ToString() + " ]") { // dllをインストールしてからインポートする string installDllPath = InstallDll(); if (installDllPath != null) { // dllをインポートする ApiImporter.ImportDll(installDllPath); return(true); } return(false); } else if (selectedValue == "[ " + ImportMenu.NameSpace.ToString() + " ]") { // ネームスペース指定でインポートする string imputText = NameSpaceName.Text.Trim(); if (imputText == "") { return(false); } // ネームスペースをインポートする if (ApiImporter.ImportNameSpace(imputText)) { // 成功 InportList.SelectedIndex = (int)ImportMenu.Init; return(true); } return(false); } else if (selectedValue == "[ " + ImportMenu.NuGet.ToString() + " ]") { string nugetName = PackageName.Text.Trim(); if (nugetName == "") { return(false); } string version = Version.Text.Trim(); if (version == "") { return(false); } // NuGetをインポートする if (ApiImporter.ImportNuGet(InstallNuGetDirectory, nugetName, version)) { // 成功 InportList.SelectedIndex = (int)ImportMenu.Init; return(true); } return(false); } // 既存のインポート if (IsNuGet(selectedValue)) { // NeGetをインポートする ApiImporter.ImportNuGet(InstallDllDirectory, selectedValue.Split(" ")[1]); return(true); } string dllPath = System.IO.Path.Combine(InstallDllDirectory, selectedValue); if (File.Exists(selectedValue)) { string msg = string.Format(CapyCSS.Language.Instance["SYSTEM_ModuleControler_04"], dllPath); ControlTools.ShowErrorMessage(msg, DLL_MESSAGE_TITLE); return(true); } // インストール済みのdllをインポートする ApiImporter.ImportDll(dllPath); return(true); }
/// <summary> /// パッケージをインストールします。 /// ただし、既にインストール済みならインストールはしません。 /// </summary> /// <param name="packageDir">パッケージ展開用ディレクトリ</param> /// <param name="packageName">パッケージ名</param> /// <param name="version">バージョン</param> /// <param name="pkgId">正式なパッケージ名(name(var))</param> /// <returns>dllリスト</returns> public static List <PackageInfo> install(string _packageDir, string packageName, string version, out string pkgId) { pkgId = ""; string toolPath = Path.Combine(_packageDir, "nuget.exe"); if (!File.Exists(toolPath)) { string msg = Language.Instance["Help:NugetNotExist"]; ControlTools.ShowErrorMessage(msg.Replace("<DIR>", _packageDir)); return(null); } string packageVName = $"{packageName}.{version}"; string packageDir = Path.Combine(_packageDir, packageName); string packageRoot = Path.Combine(packageDir, packageVName); if (!Directory.Exists(packageRoot)) { // nugetファイルをダウンロード Console.WriteLine($"Get {packageVName}"); ToolExec toolExec = new ToolExec(toolPath); toolExec.ParamList.Add("Install"); toolExec.ParamList.Add(packageName); toolExec.ParamList.Add("-Version"); toolExec.ParamList.Add(version); toolExec.ParamList.Add("-PackageSaveMode"); toolExec.ParamList.Add("nuspec"); toolExec.ParamList.Add("-OutputDirectory"); toolExec.ParamList.Add(packageDir); int result = toolExec.Start(true); if (result == 0) { Console.WriteLine("OK"); CommandCanvasList.OutPut.Flush(); } else { Console.WriteLine($"error({result})"); return(null); } } List <string> dllList = new List <string>(); List <string> libPathList = new List <string>(FileLib.GetDirectories(packageDir, true)); libPathList.Sort((a, b) => b.CompareTo(a)); foreach (var dir in libPathList) { if (dir.Contains(@"\ref\")) { continue; } if (dir.Contains("netstandard")) { ICollection <string> dll = FileLib.GetFiles(dir, "*.dll"); if (dll.Count != 0) { bool isHit = dllList.Any((n) => dir.StartsWith(n.Substring(0, n.IndexOf("netstandard")))); if (isHit) { continue; } dllList.Add(dll.First()); } } } // dll をリストに登録 var packageList = new List <PackageInfo>(); if (dllList != null && dllList.Count != 0) { string basePass = System.IO.Path.GetDirectoryName(dllList[dllList.Count - 1]); foreach (var libPath in dllList) { // 内部に複数のサブディレクトリを持っている場合、サブディレクトリ名を名前に残す string name = Path.GetFileNameWithoutExtension(libPath); if (loadedPackages.Contains(libPath)) { // 一度取り込んでいるdllは無視する continue; } loadedPackages.Add(libPath); Match match = Regex.Match(libPath, @"\d+\.\d+\.\d+"); if (match.Success) // バージョン情報が見つかった { packageList.Add(new PackageInfo(libPath, name.Replace(match.Value, ""), match.Value)); } else { packageList.Add(new PackageInfo(libPath, name, "")); } } } { Match match = Regex.Match(packageVName, @"\d+\.\d+\.\d+"); if (match.Success) // バージョン情報が見つかった { pkgId = packageVName.Replace("." + match.Value, ""); } else { pkgId = packageVName; } } return(packageList); }