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);
     }
 }
Example #3
0
            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);
        }
Example #6
0
            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);
        }
Example #8
0
        /// <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);
        }