Exemplo n.º 1
0
 private bool GetProfileName()
 {
     Item.Outputs[0].Profile = DisplayProfile.GetProfileName(SelectedProfile);
     if (string.IsNullOrEmpty(Item.Outputs[0].Profile))
     {
         Description = "プロファイルを選択してください";
         return(false);
     }
     return(true);
 }
Exemplo n.º 2
0
        public void ChangeProfile(IEnumerable selectedItems, object profile)
        {
            var profileName = DisplayProfile.GetProfileName(profile);

            foreach (var item in selectedItems.OfType <DisplayQueueItem>().ToArray())
            {
                var file = item.Model;
                Model.Server?.ChangeItem(new ChangeItemData()
                {
                    ItemId     = file.Id,
                    ChangeType = ChangeItemType.Profile,
                    Profile    = profileName
                });
            }
        }
Exemplo n.º 3
0
        public async void MakeBatchFile()
        {
            string cur    = Directory.GetCurrentDirectory();
            string exe    = Path.GetDirectoryName(GetType().Assembly.Location);
            string dst    = Model.MakeScriptData.OutDir?.TrimEnd(Path.DirectorySeparatorChar);
            string prof   = DisplayProfile.GetProfileName(Model.MakeScriptData.SelectedProfile);
            string bat    = Model.MakeScriptData.Model.AddQueueBat;
            string nas    = null;
            string ip     = "localhost";
            int    port   = Model.ServerPort;
            string subnet = null;
            string mac    = null;
            bool   direct = Model.MakeScriptData.IsDirect;

            if (prof == null)
            {
                Description = "プロファイルを選択してください";
                return;
            }

            if (string.IsNullOrEmpty(dst))
            {
                Description = "出力先が設定されていません";
                return;
            }
            if (Directory.Exists(dst) == false)
            {
                Description = "出力先ディレクトリにアクセスできません";
                return;
            }

            if (Model.MakeScriptData.IsNasEnabled)
            {
                if (string.IsNullOrEmpty(Model.MakeScriptData.NasDir))
                {
                    Description = "NAS保存先を指定してください。";
                    return;
                }
                nas = Model.MakeScriptData.NasDir.TrimEnd(Path.DirectorySeparatorChar);;
            }

            if (IsRemoteClient)
            {
                ip = Model.ServerIP;
                if (Model.MakeScriptData.IsWakeOnLan)
                {
                    var localIP = Model.LocalIP;
                    if (localIP == null)
                    {
                        Description = "IPアドレス取得に失敗";
                        return;
                    }
                    if (localIP.AddressFamily != System.Net.Sockets.AddressFamily.InterNetwork)
                    {
                        Description = "IPv4以外の接続には対応していません";
                        return;
                    }
                    var subnetaddr = ServerSupport.GetSubnetMask(((IPEndPoint)localIP).Address);
                    if (subnetaddr == null)
                    {
                        Description = "サブネットマスク取得に失敗";
                        return;
                    }
                    subnet = subnetaddr.ToString();
                    var macbytes = Model.MacAddress;
                    if (macbytes == null)
                    {
                        Description = "MACアドレス取得に失敗";
                        return;
                    }
                    mac = string.Join(":", macbytes.Select(s => s.ToString("X")));
                }
            }

            Description = "";

            var sb = new StringBuilder();

            if (direct)
            {
                sb.Append("rem _EDCBX_DIRECT_\r\n");
            }
            sb.AppendFormat("\"{0}\\AmatsukazeAddTask.exe\"", exe)
            .AppendFormat(" -r \"{0}\"", cur)
            .AppendFormat(" -f \"{0}FilePath{0}\" -ip \"{1}\"", direct ? "%" : "$", ip)
            .AppendFormat(" -p {0}", port)
            .AppendFormat(" -o \"{0}\"", dst)
            .AppendFormat(" -s \"{0}\"", prof)
            .AppendFormat(" --priority {0}", Model.MakeScriptData.Priority);
            if (nas != null)
            {
                sb.AppendFormat(" -d \"{0}\"", nas);
            }
            if (mac != null)
            {
                sb.AppendFormat(" --subnet \"{0}\"", subnet)
                .AppendFormat(" --mac \"{0}\"", mac);
            }
            if (Model.MakeScriptData.MoveAfter == false)
            {
                sb.Append(" --no-move");
            }
            if (Model.MakeScriptData.ClearSucceeded)
            {
                sb.Append(" --clear-succeeded");
            }
            if (Model.MakeScriptData.WithRelated)
            {
                sb.Append(" --with-related");
            }
            if (!string.IsNullOrEmpty(bat))
            {
                sb.AppendFormat(" -b \"{0}\"", bat);
            }

            var saveFileDialog = new SaveFileDialog();

            saveFileDialog.FilterIndex = 1;
            saveFileDialog.Filter      = "バッチファイル(.bat)|*.bat|All Files (*.*)|*.*";
            bool?result = saveFileDialog.ShowDialog();

            if (result != true)
            {
                return;
            }

            try
            {
                File.WriteAllText(saveFileDialog.FileName, sb.ToString(), Encoding.Default);
            }
            catch (Exception e)
            {
                Description = "バッチファイル作成に失敗: " + e.Message;
                return;
            }

            var resvm = new MakeBatchResultViewModel()
            {
                Path = saveFileDialog.FileName
            };

            await Messenger.RaiseAsync(new TransitionMessage(
                                           typeof(Views.MakeBatchResultWindow), resvm, TransitionMode.Modal, "Key"));

            await Model.SendMakeScriptData();
        }