private async void MidiFileButtonOnOnPressed(BaseButton.ButtonEventArgs obj) { var filters = new FileDialogFilters(new FileDialogFilters.Group("mid", "midi")); var filename = await _fileDialogManager.OpenFile(filters); var instrumentEnt = _owner.Instrument.Owner; var instrument = _owner.Instrument; ContainerHelpers.TryGetContainerMan(_owner.Instrument.Owner, out var conMan); var localPlayer = IoCManager.Resolve <IPlayerManager>().LocalPlayer; // The following checks are only in place to prevent players from playing MIDI songs locally. // There are equivalents for these checks on the server. if (string.IsNullOrEmpty(filename)) { return; } // If we don't have a player or controlled entity, we return. if (localPlayer?.ControlledEntity == null) { return; } // If the instrument is handheld and we're not holding it, we return. if ((instrument.Handheld && (conMan == null || conMan.Owner != localPlayer.ControlledEntity))) { return; } // We check that we're in range unobstructed just in case. if (!EntitySystem.Get <SharedInteractionSystem>() .InRangeUnobstructed(localPlayer.ControlledEntity.Transform.MapPosition, instrumentEnt.Transform.MapPosition, ignoredEnt: instrumentEnt)) { return; } if (!_midiManager.IsMidiFile(filename)) { Logger.Warning($"Not a midi file! Chosen file: {filename}"); return; } MidiStopButtonOnPressed(null); await Timer.Delay(100); if (!_owner.Instrument.OpenMidi(filename)) { return; } MidiPlaybackSetButtonsDisabled(false); if (midiInputButton.Pressed) { midiInputButton.Pressed = false; } }
protected string ShowExportDialog(RsExportFormat aFormat) { XmlNode lGeneralDlg = RsViewEngine.Locale.GetDialogData("generalDialogs"); string lFilter; switch (aFormat) { case RsExportFormat.ExcelDocument: lFilter = FileDialogFilters.BuildExcelFilter(lGeneralDlg); break; case RsExportFormat.HtmlDocument: lFilter = FileDialogFilters.BuildHTMLFilter(lGeneralDlg); break; case RsExportFormat.WordDocument: lFilter = FileDialogFilters.BuildWordFilter(lGeneralDlg); break; case RsExportFormat.XmlDocument: lFilter = FileDialogFilters.BuildXMLFilter(lGeneralDlg); break; default: lFilter = FileDialogFilters.BuildPDFFilter(lGeneralDlg); break; } _dlgExport.Filter = lFilter; return(_dlgExport.ShowDialog() == DialogResult.OK ? _dlgExport.FileName : null); }
private async void MidiFileButtonOnOnPressed(BaseButton.ButtonEventArgs obj) { var filters = new FileDialogFilters(new FileDialogFilters.Group("mid", "midi")); var filename = await _fileDialogManager.OpenFile(filters); if (filename == null) { return; } if (!_midiManager.IsMidiFile(filename)) { Logger.Warning($"Not a midi file! Chosen file: {filename}"); return; } if (!_owner.Instrument.OpenMidi(filename)) { return; } MidiPlaybackSetButtonsDisabled(false); if (midiInputButton.Pressed) { midiInputButton.Pressed = false; } }
private static void EhLocalizationChanged(CLocalization aLocale) { XmlNode lDialogLocale = aLocale.GetDialogData("generalDialogs"); SaveCollectionDialog.Filter = FileDialogFilters.BuildCollectionFilter(lDialogLocale); OpenCollectionDialog.Filter = FileDialogFilters.BuildCollectionFilter(lDialogLocale); }
private async void MidiFileButtonOnOnPressed(ButtonEventArgs obj) { var filters = new FileDialogFilters(new FileDialogFilters.Group("mid", "midi")); await using var file = await _fileDialogManager.OpenFile(filters); // did the instrument menu get closed while waiting for the user to select a file? if (Disposed) { return; } // The following checks are only in place to prevent players from playing MIDI songs locally. // There are equivalents for these checks on the server. if (file == null) { return; } /*if (!_midiManager.IsMidiFile(filename)) * { * Logger.Warning($"Not a midi file! Chosen file: {filename}"); * return; * }*/ if (!PlayCheck()) { return; } MidiStopButtonOnPressed(null); await using var memStream = new MemoryStream((int) file.Length); // 100ms delay is due to a race condition or something idk. // While we're waiting, load it into memory. await Task.WhenAll(Timer.Delay(100), file.CopyToAsync(memStream)); if (_owner.Instrument is not { } instrument || !EntitySystem.Get <InstrumentSystem>().OpenMidi(instrument.Owner, memStream.GetBuffer().AsSpan(0, (int)memStream.Length), instrument)) { return; } MidiPlaybackSetButtonsDisabled(false); if (InputButton.Pressed) { InputButton.Pressed = false; } }
public async void Execute(IConsoleShell shell, string argStr, string[] args) { var cfgMan = IoCManager.Resolve <IConfigurationManager>(); if (!cfgMan.GetCVar(CCVars.ResourceUploadingEnabled)) { shell.WriteError("Network Resource Uploading is currently disabled by the server."); return; } if (args.Length != 1) { shell.WriteError("Wrong number of arguments!"); return; } var dialog = IoCManager.Resolve <IFileDialogManager>(); var filters = new FileDialogFilters(new FileDialogFilters.Group("*")); await using var file = await dialog.OpenFile(filters); if (file == null) { shell.WriteError("Error picking file!"); return; } var sizeLimit = cfgMan.GetCVar(CCVars.ResourceUploadingLimitMb); if (sizeLimit > 0f && file.Length * SharedNetworkResourceManager.BytesToMegabytes > sizeLimit) { shell.WriteError($"File above the current size limit! It must be smaller than {sizeLimit} MB."); return; } var data = file.CopyToArray(); var netManager = IoCManager.Resolve <INetManager>(); var msg = netManager.CreateNetMessage <NetworkResourceUploadMessage>(); msg.RelativePath = new ResourcePath(args[0]).ToRelativePath(); msg.Data = data; netManager.ClientSendMessage(msg); }
/// <summary> /// Setup Filters /// </summary> /// <param name="fd"></param> /// <param name="defaultExt"></param> /// <param name="fltrs"></param> /// <returns>Index of initial filter</returns> static int SetupFilters( string filter, string defaultExt, Microsoft.Office.Core.FileDialog fd) { FileDialogFilters fltrs = null; if (fd != null) // only setup if fd is defined { fltrs = fd.Filters; fltrs.Clear(); } string[] sa = filter.Split(','); int sfi = 0; for (int fi = 0; fi < sa.Length; fi += 2) { string desc = sa[fi]; string ext = sa[fi + 1]; if (fltrs != null) { fltrs.Add(desc, ext); } if (Lex.Contains(ext, defaultExt)) // selected filter { sfi = fi / 2 + 1; } } if (sfi == 0 && sa.Length > 0) { sfi = 1; } if (fltrs != null) { fd.FilterIndex = sfi; // set the filter index } return(sfi); }
private async void MidiFileButtonOnOnPressed(BaseButton.ButtonEventArgs obj) { var filters = new FileDialogFilters(new FileDialogFilters.Group("mid", "midi")); var filename = await _fileDialogManager.OpenFile(filters); // The following checks are only in place to prevent players from playing MIDI songs locally. // There are equivalents for these checks on the server. if (string.IsNullOrEmpty(filename)) { return; } if (!_midiManager.IsMidiFile(filename)) { Logger.Warning($"Not a midi file! Chosen file: {filename}"); return; } if (!PlayCheck()) { return; } MidiStopButtonOnPressed(null); await Timer.Delay(100); if (!_owner.Instrument.OpenMidi(filename)) { return; } MidiPlaybackSetButtonsDisabled(false); if (_midiInputButton.Pressed) { _midiInputButton.Pressed = false; } }
private void SaveWorkSheet(Workbook wb, bool saveasui, ref bool cancel, bool reOpen) { // 不需要保存处理的话,直接返回 if (!SettingsCsv.Default.EnableSaveEncode) { return; } string fileName = wb.FullName; if (!fileName.ToLower().EndsWith(".csv")) { return; } if (!fileDict.ContainsKey(fileName)) { Encoding encoding = GetFileEncoding(fileName); fileDict[fileName] = encoding; } Encoding fileEncoding = fileDict[fileName]; if (Equals(fileEncoding, Encoding.UTF8) || Equals(fileEncoding, Encoding.Unicode) || Equals(fileEncoding, Encoding.BigEndianUnicode)) { // 自己来操作 cancel = true; // 如果是另存为,那么需要获取另存为的文件名,所以要自己显示另存为保存框 if (saveasui) { FileDialog fileDialog = app.FileDialog[MsoFileDialogType.msoFileDialogSaveAs]; fileDialog.InitialFileName = wb.Name; fileDialog.AllowMultiSelect = false; fileDialog.Title = "另存为"; FileDialogFilters fileDialogFilters = fileDialog.Filters; bool flag = false; for (int i = 1; i <= fileDialogFilters.Count; i++) { if ("*.csv".Equals(fileDialogFilters.Item(i).Extensions)) { flag = true; fileDialog.FilterIndex = i; break; } } if (!flag) { fileDialogFilters.Add("CSV (逗号分隔)", "*.csv"); fileDialog.FilterIndex = fileDialogFilters.Count; } // 取消了操作 if (fileDialog.Show() == 0) { return; } string fileNewName = fileDialog.SelectedItems.Item(1); if (!fileNewName.ToLower().EndsWith(".csv")) { // 非csv则普通保存,需要标志一下,否则会再进来,因为文件名是同一个 flagSaveAs = true; wb.SaveAs(fileNewName); return; } fileDict[fileNewName] = fileEncoding; fileName = fileNewName; } app.ScreenUpdating = false; // 取值 StringBuilder sb = new StringBuilder(); Worksheet sheet = wb.ActiveSheet; Range range = sheet.UsedRange; int row = range.Rows.Count; int col = range.Columns.Count; object[,] tmp = sheet.UsedRange.Value; for (int i = 1; i <= row; i++) { for (int j = 1; j <= col; j++) { if (j != 1) { sb.Append(','); } var obj = tmp[i, j]; if (obj == null) { continue; } var val = obj.ToString(); if (!string.IsNullOrEmpty(val)) { sb.Append(ConvertToCsvCellString(val)); } } if (i != row) { sb.AppendLine(string.Empty); } } var win = wb.Windows[1]; range = win.ActiveCell; row = range.Row; col = range.Column; int scrollRow = win.ScrollRow; int scrollCol = win.ScrollColumn; // 如果异常,就不用再打开单元簿 bool canClose = reOpen; try { wb.Saved = true; wb.Close(false); } catch { canClose = false; } // 保存带编码的csv using (StreamWriter sw = new StreamWriter(fileName, false, fileEncoding)) { sw.Write(sb.ToString()); sw.Close(); sw.Dispose(); } if (canClose) { wb = app.Workbooks.Open(fileName); app.ScreenUpdating = false; sheet = wb.ActiveSheet; sheet.UsedRange.Columns.NumberFormat = "@"; sheet.UsedRange.Value = tmp; // 设置成文本格式后,需要再赋值,否则会出现科学计数 sheet.Cells[row, col].Select(); wb.Windows[1].ScrollColumn = scrollCol; wb.Windows[1].ScrollRow = scrollRow; wb.Saved = true; } app.ScreenUpdating = true; } }