public EditableValue[] GetValues() { var ret = new List <EditableValue>(); EditableValue ev = new EditableValue(); ev.Value = CustomData; if (Name != string.Empty) { ev.Title = Name; ev.Description = Desc; } else { ev.Title = MultiLanguageTextProvider.GetText("CustomData_Name") + customDataNum.ToString(); ev.Description = ""; } ev.IsShown = true; ev.IsUndoEnabled = true; ev.SelfSelectorID = 10; ret.Add(ev); ret.Add(EditableValue.Create(Fixed, this.GetType().GetProperty("Fixed"))); ret.Add(EditableValue.Create(Random, this.GetType().GetProperty("Random"))); ret.Add(EditableValue.Create(Easing, this.GetType().GetProperty("Easing"))); ret.Add(EditableValue.Create(FCurve, this.GetType().GetProperty("FCurve"))); ret.Add(EditableValue.Create(Fixed4, this.GetType().GetProperty("Fixed4"))); ret.Add(EditableValue.Create(FCurveColor, this.GetType().GetProperty("FCurveColor"))); return(ret.ToArray()); }
private static void ChangeLanguage() { MultiLanguageTextProvider.RootDirectory = GUI.Manager.GetEntryDirectory() + "/"; MultiLanguageTextProvider.Reset(); MultiLanguageTextProvider.LoadCSV("Base.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer.csv"); }
public void Show(string path, EfkPkg efkpkg) { title = MultiLanguageTextProvider.GetText("ImportEfkPkgTitle"); sourceFilePath = Utils.Misc.BackSlashToSlash(path); // FileViewer Path or Current Effect Path or Current Directory string targetDirPath = null; var fileViewer = (Dock.FileViewer)Manager.GetWindow(typeof(Dock.FileViewer)); if (fileViewer != null && !string.IsNullOrEmpty(fileViewer.CurrentPath)) { targetDirPath = fileViewer.CurrentPath; } else if (!string.IsNullOrEmpty(Core.Root.GetFullPath())) { targetDirPath = Path.GetDirectoryName(Core.Root.GetFullPath()); } else { targetDirPath = Directory.GetCurrentDirectory(); } try { importer = new EfkPkgImporter(efkpkg, targetDirPath); } catch (Exception e) { var mb = new MessageBox(); mb.Show("Error", e.Message); ShouldBeRemoved = true; } Manager.AddControl(this); }
public static string GetString(string name) { var text = MultiLanguageTextProvider.GetText(name); if (text != null) { return(text); } if (keyToStrings.ContainsKey(name)) { return(keyToStrings[name]); } if (resources == null) { return(string.Empty); } try { var value = resources.GetString(name); if (!String.IsNullOrEmpty(value)) { return(value); // 発見した場合、文字列を返す } } catch {} return(string.Empty); }
public void Show(string path, EfkPkg efkpkg) { title = MultiLanguageTextProvider.GetText("ImportEfkPkgTitle"); EfkPkg = efkpkg; sourceFilePath = Utils.Misc.BackSlashToSlash(path); // FileViewer Path or Current Effect Path or Current Directory var fileViewer = (Dock.FileViewer)Manager.GetWindow(typeof(Dock.FileViewer)); if (fileViewer != null && !string.IsNullOrEmpty(fileViewer.CurrentPath)) { targetDirPath = fileViewer.CurrentPath; } else if (!string.IsNullOrEmpty(Core.Root.GetFullPath())) { targetDirPath = Path.GetDirectoryName(Core.Root.GetFullPath()); } else { targetDirPath = Directory.GetCurrentDirectory(); } targetDirPath = Utils.Misc.BackSlashToSlash(targetDirPath); targetDirPathValid = Directory.Exists(targetDirPath); foreach (var file in efkpkg.AllFiles) { var import = new ImportFile(); import.DestinationName = file.RelativePath; import.DoesImport = true; import.ValidationPath(targetDirPath); importFiles.Add(file, import); } Manager.AddControl(this); }
private static void ChangeLanguage() { MultiLanguageTextProvider.RootDirectory = GUI.Manager.GetEntryDirectory() + "/"; MultiLanguageTextProvider.Reset(); MultiLanguageTextProvider.LoadCSV("Base.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_Options.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_BasicSettings.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_Position.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_Rotation.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_Scale.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_BasicRenderSettings.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_RenderSettings.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_LocalForceField.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_AdvancedRenderCommon.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_Environment.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_ProceduralModel.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_Behavior.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_SpawnMethod.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_Depth.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_Culling.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_Global.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_Sound.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_FCurve.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_FCurve_Element.csv"); LanguageTable.CreateTableFromDirectory(EntryDirectory); GUI.Manager.UpdateFont(); }
public void Initialize(Type enumType) { if (isInitialized) { return; } isInitialized = true; // to avoid to change placesGetValues, use GetFields var list = new List <int>(); var fields = enumType.GetFields(); //var iconBitmaps = new List<Bitmap>(); //bool hasIcon = false; foreach (var f in fields) { if (f.FieldType != enumType) { continue; } var attributes = f.GetCustomAttributes(false); object name = f.ToString(); var key = KeyAttribute.GetKey(attributes); var nameKey = key + "_Name"; if (string.IsNullOrEmpty(key)) { nameKey = f.FieldType.ToString() + "_" + f.ToString() + "_Name"; } if (MultiLanguageTextProvider.HasKey(nameKey)) { name = new MultiLanguageString(nameKey); } else { name = NameAttribute.GetName(attributes); if (name.ToString() == string.Empty) { name = f.ToString(); } //System.IO.File.AppendAllText("kv.csv", nameKey + "," + name.ToString() + "\r\n"); } var iconAttribute = IconAttribute.GetIcon(attributes); if (iconAttribute != null) { name = iconAttribute.code + name; } list.Add((int)f.GetValue(null)); FieldNames.Add(name); } enums = list.ToArray(); }
public void Update() { if (isFirstUpdate) { Manager.NativeManager.OpenPopup(id); isFirstUpdate = false; if (Core.Language == Language.Japanese) { this.message = "拡大"; } else { this.message = "Scale"; } } if (Manager.NativeManager.BeginPopupModal(title + id, ref opened, swig.WindowFlags.AlwaysAutoResize)) { Manager.NativeManager.Text(message); var fs = new float[] { Magnification }; if (Manager.NativeManager.DragFloat("###mag", fs)) { Magnification = fs[0]; } var okText = MultiLanguageTextProvider.GetText("Save"); var cancelText = MultiLanguageTextProvider.GetText("Cancel"); if (Manager.NativeManager.Button(okText)) { OK = true; ShouldBeRemoved = true; if (OnOK != null) { OnOK(); } } if (Manager.NativeManager.Button(cancelText)) { ShouldBeRemoved = true; if (OnCancel != null) { OnCancel(); } } Manager.NativeManager.EndPopup(); } else { ShouldBeRemoved = true; } }
public static string GetString(string name) { if (MultiLanguageTextProvider.HasKey(name)) { return(MultiLanguageTextProvider.GetText(name)); } return(string.Empty); }
private static void ChangeLanguage() { MultiLanguageTextProvider.RootDirectory = GUI.Manager.GetEntryDirectory() + "/"; MultiLanguageTextProvider.Reset(); MultiLanguageTextProvider.LoadCSV("Base.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_Options.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_BasicSettings.csv"); GUI.Manager.UpdateFont(); }
public bool ShowViewer(IntPtr handle, int width, int height, swig.DeviceType deviceType) { if (isViewerShown) { return(false); } if (native == null) { throw new Exception("native is null."); } ViewPointController = new swig.ViewPointController(); ViewPointController.ProjectionStyle = deviceType == swig.DeviceType.OpenGL ? swig.ProjectionMatrixStyle.OpenGLStyle : swig.ProjectionMatrixStyle.DirectXStyle; if (native.CreateWindow_Effekseer( handle, width <= 0 ? 1 : width, height <= 0 ? 1 : height, Core.Option.ColorSpace.Value == Data.OptionValues.ColorSpaceType.LinearSpace, deviceType)) { isViewerShown = true; } else { var message = MultiLanguageTextProvider.GetText("System_FailedToInitialize"); Core.OnOutputMessage(message); return(false); } ViewMode_OnChanged(null, null); Core.Option.ViewerMode.OnChanged += ViewMode_OnChanged; Core.Option.RenderingMode.OnChanged += RenderingMode_OnChanged; RenderingMode_OnChanged(null, null); Bloom_OnChanged(null, null); Core.Environment.PostEffect.BloomSwitch.OnChanged += Bloom_OnChanged; Core.Environment.PostEffect.Bloom.Intensity.OnChanged += Bloom_OnChanged; Core.Environment.PostEffect.Bloom.Threshold.OnChanged += Bloom_OnChanged; Core.Environment.PostEffect.Bloom.SoftKnee.OnChanged += Bloom_OnChanged; Tonemap_OnChanged(null, null); Core.Environment.PostEffect.TonemapSelector.OnChanged += Tonemap_OnChanged; Core.Environment.PostEffect.TonemapReinhard.Exposure.OnChanged += Tonemap_OnChanged; effectFactory = new swig.EffectFactory(native); return(true); }
public static bool RestoreLastSession() { string lastSessionFile = Path.GetTempPath() + "/efk_quit.efkbac"; if (!File.Exists(lastSessionFile)) { Core.OnOutputMessage?.Invoke(MultiLanguageTextProvider.GetText("Recover_LastSession_Error")); return(false); } RunWithUnsavedWarning(() => Core.OpenBackup(lastSessionFile)); return(true); }
private void UpdateFileList(swig.Vec2 size) { var textImportSourceFile = MultiLanguageTextProvider.GetText("ImportSourceFile"); var textImportDestinationFile = MultiLanguageTextProvider.GetText("ImportDestinationFile"); Manager.NativeManager.BeginChildFrame(1, size); Manager.NativeManager.Columns(2); // display file table header Manager.NativeManager.Text(textImportSourceFile); Manager.NativeManager.NextColumn(); Manager.NativeManager.Text(textImportDestinationFile); Manager.NativeManager.NextColumn(); Manager.NativeManager.Separator(); // display file table body foreach (var import in importer.ImportedFiles) { var file = import.FileInfo; bool[] doesImport = new bool[] { import.DoesImport }; // source file if (Manager.NativeManager.Checkbox(file.RelativePath, doesImport)) { importer.SetFileImportSettings(file, doesImport[0]); } Manager.NativeManager.NextColumn(); // destination file if (import.DoesImport) { Manager.NativeManager.PushItemWidth(-Manager.NativeManager.GetFrameHeight()); if (Manager.NativeManager.InputText(GetStateIcon(import.State) + "###" + file.HashName, import.DestinationRelativePath)) { import.DestinationRelativePath = Manager.NativeManager.GetInputTextResult(); importer.RenewIOStatus(); } Manager.NativeManager.PopItemWidth(); } Manager.NativeManager.NextColumn(); } Manager.NativeManager.Columns(1); Manager.NativeManager.EndChildFrame(); }
// Display file list private void UpdateFileList(swig.Vec2 size) { var textImportSourceFile = MultiLanguageTextProvider.GetText("ImportSourceFile"); var textImportDestinationFile = MultiLanguageTextProvider.GetText("ImportDestinationFile"); Manager.NativeManager.BeginChildFrame(1, size); Manager.NativeManager.Columns(2); // display file table header Manager.NativeManager.Text(textImportSourceFile); Manager.NativeManager.NextColumn(); Manager.NativeManager.Text(textImportDestinationFile); Manager.NativeManager.NextColumn(); Manager.NativeManager.Separator(); // display file table body foreach (var file in EfkPkg.AllFiles) { var import = importFiles[file]; bool[] doesImport = new bool[] { import.DoesImport }; // source file if (Manager.NativeManager.Checkbox(file.Name, doesImport)) { SetFileImportSettings(file, doesImport[0]); } Manager.NativeManager.NextColumn(); // destination file if (import.DoesImport) { Manager.NativeManager.PushItemWidth(-Manager.NativeManager.GetTextLineHeight()); if (Manager.NativeManager.InputText(import.GetStateIcon() + "###" + file.HashName, import.DestinationName)) { import.DestinationName = Manager.NativeManager.GetInputTextResult(); import.ValidationPath(targetDirPath); } Manager.NativeManager.PopItemWidth(); } Manager.NativeManager.NextColumn(); } Manager.NativeManager.Columns(1); Manager.NativeManager.EndChildFrame(); }
void UpdateOptionMenu() { float fontSize = Manager.NativeManager.GetTextLineHeight(); Manager.NativeManager.SetNextWindowSize(fontSize * 20, 0.0f, swig.Cond.Always); if (Manager.NativeManager.BeginPopup(OptionMenuPopupId)) { var viewMode = Core.Option.FileViewerViewMode.GetValue(); Manager.NativeManager.PushItemWidth(fontSize * 8); // View Mode setting string comboLabel = MultiLanguageTextProvider.GetText("Options_FileViewerViewMode_Name"); string comboSelectedLabel = MultiLanguageTextProvider.GetText("FileViewer_ViewMode_" + Core.Option.FileViewerViewMode.GetValue().ToString() + "_Name"); if (Manager.NativeManager.BeginCombo(comboLabel, comboSelectedLabel, swig.ComboFlags.None)) { string iconViewLabel = MultiLanguageTextProvider.GetText("FileViewer_ViewMode_" + Data.OptionValues.FileViewMode.IconView.ToString() + "_Name"); if (Manager.NativeManager.Selectable(iconViewLabel, viewMode == Data.OptionValues.FileViewMode.IconView)) { Core.Option.FileViewerViewMode.SetValueDirectly(Data.OptionValues.FileViewMode.IconView); } string listViewLabel = MultiLanguageTextProvider.GetText("FileViewer_ViewMode_" + Data.OptionValues.FileViewMode.ListView.ToString() + "_Name"); if (Manager.NativeManager.Selectable(listViewLabel, viewMode == Data.OptionValues.FileViewMode.ListView)) { Core.Option.FileViewerViewMode.SetValueDirectly(Data.OptionValues.FileViewMode.ListView); } Manager.NativeManager.EndCombo(); } // Icon size setting if (viewMode == Data.OptionValues.FileViewMode.IconView) { int[] val = new int[1] { Core.Option.FileViewerIconSize.GetValue() }; if (Manager.NativeManager.DragInt(MultiLanguageTextProvider.GetText("Options_FileViewerIconSize_Name"), val, 1, 32, 512, "%d")) { Core.Option.FileViewerIconSize.SetValueDirectly(val[0]); } } Manager.NativeManager.PopItemWidth(); Manager.NativeManager.EndPopup(); } }
private static void ChangeLanguage() { MultiLanguageTextProvider.RootDirectory = GUI.Manager.GetEntryDirectory() + "/"; MultiLanguageTextProvider.Reset(); MultiLanguageTextProvider.LoadCSV("Base.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_Options.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_BasicSettings.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_Position.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_Rotation.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_Scale.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_BasicRenderSettings.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_RenderSettings.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_LocalForceField.csv"); MultiLanguageTextProvider.LoadCSV("Effekseer_AdvancedRenderCommon.csv"); GUI.Manager.UpdateFont(); }
static public bool ViewHelp() { string helpPath = @"https://effekseer.github.io/Helps/16x/Tool/en/index.html"; if (Core.Language == Language.Japanese) { helpPath = @"https://effekseer.github.io/Helps/16x/Tool/ja/index.html"; } try { System.Diagnostics.Process.Start(helpPath); } catch { swig.GUIManager.show(MultiLanguageTextProvider.GetText("Error_FailedToOpenHelp"), "Error", swig.DialogStyle.Error, swig.DialogButtons.OK); } return(true); }
public void Update() { if (isFirstUpdate) { Effekseer.GUI.Manager.NativeManager.OpenPopup(id); isFirstUpdate = false; } if (Effekseer.GUI.Manager.NativeManager.BeginPopupModal(title + id, ref opened, Effekseer.swig.WindowFlags.AlwaysAutoResize)) { if (Effekseer.GUI.Manager.NativeManager.DragFloat(this.title, mag, 0.1f, 0, float.MaxValue)) { } var save_text = MultiLanguageTextProvider.GetText("Save"); var cancel_text = MultiLanguageTextProvider.GetText("Cancel"); if (Effekseer.GUI.Manager.NativeManager.Button(save_text)) { var binaryExporter = new Binary.Exporter(); var binary = binaryExporter.Export(Core.Root, mag[0]); System.IO.File.WriteAllBytes(path, binary); Effekseer.Core.Option.ExternalMagnification.SetValue(mag[0]); ShouldBeRemoved = true; } if (Effekseer.GUI.Manager.NativeManager.Button(cancel_text)) { ShouldBeRemoved = true; } Effekseer.GUI.Manager.NativeManager.EndPopup(); } else { ShouldBeRemoved = true; } }
public static void Update() { if (isFontSizeDirtied) { NativeManager.InvalidateFont(); var appDirectory = Manager.GetEntryDirectory(); var type = Core.Option.Font.Value; NativeManager.ClearAllFonts(); var characterTable = System.IO.Path.Combine(appDirectory, "resources/languages/characterTable.txt"); if (type == Data.FontType.Normal) { NativeManager.AddFontFromFileTTF(System.IO.Path.Combine(appDirectory, MultiLanguageTextProvider.GetText("Font_Normal")), characterTable, MultiLanguageTextProvider.GetText("CharacterTable"), Core.Option.FontSize.Value); } else if (type == Data.FontType.Bold) { NativeManager.AddFontFromFileTTF(System.IO.Path.Combine(appDirectory, MultiLanguageTextProvider.GetText("Font_Bold")), characterTable, MultiLanguageTextProvider.GetText("CharacterTable"), Core.Option.FontSize.Value); } NativeManager.AddFontFromAtlasImage(System.IO.Path.Combine(appDirectory, "resources/icons/MenuIcons.png"), 0xec00, 24, 24, 16, 16); isFontSizeDirtied = false; } // Reset IO.Update(); Shortcuts.Update(); Network.Update(); var handle = false; if (!handle) { if (!NativeManager.IsAnyItemActive()) { Shortcuts.ProcessCmdKey(ref handle); } } var mousePos = NativeManager.GetMousePosition(); if (isFirstUpdate) { mousePos_pre = mousePos; } if ((effectViewer == null && !NativeManager.IsAnyWindowHovered()) || (effectViewer != null && effectViewer.IsHovered)) { var result = ControllViewport(); if (result.Slide) { var dx = mousePos.X - mousePos_pre.X; var dy = mousePos.Y - mousePos_pre.Y; if (Core.Option.ViewerMode.Value == Data.OptionValues.ViewMode._3D) { Viewer.Slide(dx / 30.0f, dy / 30.0f); } else if (Core.Option.ViewerMode.Value == Data.OptionValues.ViewMode._2D) { Viewer.Slide(dx / 16.0f, dy / 16.0f); } } else if (NativeManager.GetMouseWheel() != 0) { Viewer.Zoom(NativeManager.GetMouseWheel()); } else if (result.Zoom) { var dx = mousePos.X - mousePos_pre.X; var dy = mousePos.Y - mousePos_pre.Y; Viewer.Zoom(-dy * 0.25f); } else if (result.Rotate) { var dx = mousePos.X - mousePos_pre.X; var dy = mousePos.Y - mousePos_pre.Y; if (Core.Option.ViewerMode.Value == Data.OptionValues.ViewMode._3D) { Viewer.Rotate(dx, dy); } else if (Core.Option.ViewerMode.Value == Data.OptionValues.ViewMode._2D) { Viewer.Slide(dx / 16.0f, dy / 16.0f); } } } mousePos_pre = mousePos; Viewer.UpdateViewer(); Native.UpdateWindow(); Native.ClearWindow(50, 50, 50, 0); //if(effectViewer == null) //{ // Native.RenderWindow(); //} NativeManager.ResetGUI(); if (resetCount < 0) { resetCount++; if (resetCount == 0) { Application.Current.OnResetWindowActually(); } } if (resizedCount > 0) { resizedCount--; } Controls.Lock(); foreach (var c in Controls.Internal) { c.Update(); } foreach (var _ in Controls.Internal) { if (!_.ShouldBeRemoved) { continue; } var dp = _ as Dock.DockPanel; if (dp != null) { dp.DispatchDisposed(); } } foreach (var _ in Controls.Internal) { if (!_.ShouldBeRemoved) { continue; } Controls.Remove(_); } Controls.Unlock(); for (int i = 0; i < dockTypes.Length; i++) { if (panels[i] != null && panels[i].ShouldBeRemoved) { panels[i] = null; } } NativeManager.RenderGUI(resizedCount == 0); Native.Present(); NativeManager.Present(); isFirstUpdate = false; // TODO more smart // When minimized, suppress CPU activity if (actualWidth == 0) { System.Threading.Thread.Sleep(16); } }
public static bool Initialize(int width, int height, swig.DeviceType deviceType, Type[] dockTypes_) { dockTypes = dockTypes_; var appDirectory = Manager.GetEntryDirectory(); swig.MainWindowState state = new swig.MainWindowState(); if (System.Environment.OSVersion.Platform == PlatformID.Win32NT) { IsWindowFrameless = true; } // TODO : refactor var windowConfig = new Configs.WindowConfig(); if (windowConfig.Load(ConfigFilePath)) { state.PosX = windowConfig.WindowPosX; state.PosY = windowConfig.WindowPosY; state.Width = windowConfig.WindowWidth; state.Height = windowConfig.WindowHeight; state.IsMaximumMode = windowConfig.WindowIsMaximumMode; } else { state.PosX = -10000; // nodata state.Width = 1280; state.Height = 720; windowConfig = null; } state.IsFrameless = IsWindowFrameless; if (!swig.MainWindow.Initialize("Effekseer", state, false, deviceType == swig.DeviceType.OpenGL)) { return(false); } MainWindow = swig.MainWindow.GetInstance(); swig.IO.Initialize(1000); IO = swig.IO.GetInstance(); ioCallback = new ManagerIOCallback(); IO.AddCallback(ioCallback); Core.OnFileLoaded += (string path) => { #if DEBUG Console.WriteLine("OnFileLoaded : " + path); #endif var f = IO.LoadIPCFile(path); if (f == null) { f = IO.LoadFile(path); } // TODO : refactor it // Permission error if (f != null && f.GetSize() == 0) { var message = MultiLanguageTextProvider.GetText("PermissionError_File"); if (swig.GUIManager.IsMacOSX()) { message += "\n"; message += MultiLanguageTextProvider.GetText("PermissionError_File_Mac"); } message = string.Format(message, System.IO.Path.GetFileName(path)); throw new FileLoadPermissionException(message); } if (f == null) { return(null); } byte[] ret = new byte[f.GetSize()]; System.Runtime.InteropServices.Marshal.Copy(f.GetData(), ret, 0, ret.Length); f.Dispose(); return(ret); }; ThumbnailManager.Initialize(); var mgr = new swig.GUIManager(); if (mgr.Initialize(MainWindow, deviceType)) { } else { mgr.Dispose(); mgr = null; return(false); } Native = new swig.Native(); Viewer = new Viewer(Native); if (!Viewer.ShowViewer(mgr.GetNativeHandle(), state.Width, state.Height, deviceType)) { mgr.Dispose(); mgr = null; return(false); } mgr.InitializeGUI(Native); NativeManager = mgr; Images.Load(GUI.Manager.Native); guiManagerCallback = new GUIManagerCallback(); NativeManager.SetCallback(guiManagerCallback); panels = new Dock.DockPanel[dockTypes.Length]; // Load font UpdateFont(); // Load window icon NativeManager.SetWindowIcon(System.IO.Path.Combine(appDirectory, "resources/icon.png")); // Load config RecentFiles.LoadRecentConfig(); Shortcuts.LoadShortcuts(); Commands.Register(); // Add controls Application.Current.OnCreateMainMenu(); dockManager = new GUI.Dock.DockManager(); GUI.Manager.AddControl(dockManager); // EffectViwer Application.Current.OnCreateEffectViwer(); if (LoadWindowConfig(ConfigFilePath)) { } else { ResetWindow(); } TextOffsetY = (NativeManager.GetTextLineHeightWithSpacing() - NativeManager.GetTextLineHeight()) / 2; Network = new Network(Native); Network.Load(); Command.CommandManager.Changed += OnChanged; Core.EffectBehavior.Location.X.OnChanged += OnChanged; Core.EffectBehavior.Location.Y.OnChanged += OnChanged; Core.EffectBehavior.Location.Z.OnChanged += OnChanged; Core.EffectBehavior.Rotation.X.OnChanged += OnChanged; Core.EffectBehavior.Rotation.Y.OnChanged += OnChanged; Core.EffectBehavior.Rotation.Z.OnChanged += OnChanged; Core.EffectBehavior.Scale.X.OnChanged += OnChanged; Core.EffectBehavior.Scale.Y.OnChanged += OnChanged; Core.EffectBehavior.Scale.Z.OnChanged += OnChanged; Core.EffectBehavior.LocationVelocity.X.OnChanged += OnChanged; Core.EffectBehavior.LocationVelocity.Y.OnChanged += OnChanged; Core.EffectBehavior.LocationVelocity.Z.OnChanged += OnChanged; Core.EffectBehavior.RotationVelocity.X.OnChanged += OnChanged; Core.EffectBehavior.RotationVelocity.Y.OnChanged += OnChanged; Core.EffectBehavior.RotationVelocity.Z.OnChanged += OnChanged; Core.EffectBehavior.ScaleVelocity.X.OnChanged += OnChanged; Core.EffectBehavior.ScaleVelocity.Y.OnChanged += OnChanged; Core.EffectBehavior.ScaleVelocity.Z.OnChanged += OnChanged; Core.EffectBehavior.RemovedTime.Infinite.OnChanged += OnChanged; Core.EffectBehavior.RemovedTime.Value.OnChanged += OnChanged; Core.EffectBehavior.TargetLocation.X.OnChanged += OnChanged; Core.EffectBehavior.TargetLocation.Y.OnChanged += OnChanged; Core.EffectBehavior.TargetLocation.Z.OnChanged += OnChanged; Core.EffectBehavior.CountX.OnChanged += OnChanged; Core.EffectBehavior.CountY.OnChanged += OnChanged; Core.EffectBehavior.CountZ.OnChanged += OnChanged; Core.EffectBehavior.Distance.OnChanged += OnChanged; Core.EffectBehavior.TimeSpan.OnChanged += OnChanged; Core.EffectBehavior.ColorAll.R.OnChanged += OnChanged; Core.EffectBehavior.ColorAll.G.OnChanged += OnChanged; Core.EffectBehavior.ColorAll.B.OnChanged += OnChanged; Core.EffectBehavior.ColorAll.A.OnChanged += OnChanged; Core.EffectBehavior.PlaybackSpeed.OnChanged += OnChanged; Core.Option.Magnification.OnChanged += OnChanged; Core.Option.IsGridShown.OnChanged += OnChanged; Core.Option.GridLength.OnChanged += OnChanged; Core.Option.GridColor.R.OnChanged += OnChanged; Core.Option.GridColor.G.OnChanged += OnChanged; Core.Option.GridColor.B.OnChanged += OnChanged; Core.Option.GridColor.A.OnChanged += OnChanged; Core.Option.FPS.OnChanged += OnChanged; Core.Option.DistortionType.OnChanged += OnChanged; Core.Option.Coordinate.OnChanged += OnChanged; Core.Environment.Background.BackgroundColor.R.OnChanged += OnChanged; Core.Environment.Background.BackgroundColor.G.OnChanged += OnChanged; Core.Environment.Background.BackgroundColor.B.OnChanged += OnChanged; Core.Environment.Background.BackgroundColor.A.OnChanged += OnChanged; Core.Environment.Background.BackgroundImage.OnChanged += OnChanged; Core.Environment.Ground.IsShown.OnChanged += OnChanged; Core.Environment.Ground.Height.OnChanged += OnChanged; Core.Environment.Ground.Extent.OnChanged += OnChanged; Core.Culling.IsShown.OnChanged += OnChanged; Core.Culling.Type.OnChanged += OnChanged; Core.Culling.Sphere.Location.X.OnChanged += OnChanged; Core.Culling.Sphere.Location.Y.OnChanged += OnChanged; Core.Culling.Sphere.Location.Z.OnChanged += OnChanged; Core.Culling.Sphere.Radius.OnChanged += OnChanged; Core.OnAfterLoad += new EventHandler(Core_OnAfterLoad); Core.OnAfterNew += new EventHandler(Core_OnAfterNew); Core.OnReload += new EventHandler(Core_OnReload); // Set imgui path var entryDirectory = GetEntryDirectory(); swig.GUIManager.SetIniFilename(ImGuiIniFilePath); // check files if (!System.IO.File.Exists(System.IO.Path.Combine(appDirectory, "resources/fonts/GenShinGothic-Monospace-Bold.ttf"))) { ErrorUtils.ThrowFileNotfound(); } if (!System.IO.File.Exists(System.IO.Path.Combine(appDirectory, "resources/icons/MenuIcons.png"))) { ErrorUtils.ThrowFileNotfound(); } return(true); }
public void Update() { if (isFirstUpdate) { Manager.NativeManager.OpenPopup(id); isFirstUpdate = false; } float dpiScale = Manager.DpiScale; Manager.NativeManager.SetNextWindowSize(500 * dpiScale, 400 * dpiScale, swig.Cond.Once); if (Manager.NativeManager.BeginPopupModal(title + id, ref opened)) { { var text = MultiLanguageTextProvider.GetText("ImportSourcePackage"); Manager.NativeManager.PushItemWidth(-1); Manager.NativeManager.Text(text); Manager.NativeManager.InputText("###SourceFilePath", sourceFilePath, swig.InputTextFlags.ReadOnly); Manager.NativeManager.PopItemWidth(); } Manager.NativeManager.Spacing(); { var text = MultiLanguageTextProvider.GetText("ImportDestinationDirectory"); Manager.NativeManager.PushItemWidth(-Manager.NativeManager.GetFrameHeight()); Manager.NativeManager.Text(text); Manager.NativeManager.SameLine(); Manager.NativeManager.SetCursorPosY(Manager.NativeManager.GetCursorPosY() - Manager.NativeManager.GetFrameHeight() + Manager.NativeManager.GetTextLineHeight()); if (Manager.NativeManager.Button(MultiLanguageTextProvider.GetText("Select"))) { var directory = swig.FileDialog.PickFolder(Directory.GetCurrentDirectory()); if (!string.IsNullOrEmpty(directory)) { importer.DestinationPath = directory; importer.RenewIOStatus(); } } string icon = (importer.IsDestinationPathValid) ? Icons.CommonCheck : Icons.CommonError; if (Manager.NativeManager.InputText(icon + "###TargetDirPath", importer.DestinationPath)) { importer.DestinationPath = Manager.NativeManager.GetInputTextResult(); importer.RenewIOStatus(); } Manager.NativeManager.PopItemWidth(); } Manager.NativeManager.Spacing(); if (Manager.NativeManager.Button(MultiLanguageTextProvider.GetText("ImportRemoveDirPath") + "###ImportRemoveDirPath")) { importer.RemoveDirectoryNames(); } if (Manager.NativeManager.Button(MultiLanguageTextProvider.GetText("ImportAvoidOverwrite") + "###ImportAvoidOverwrite")) { importer.RenameFileNamesToAvoidOverwrite(); } if (Manager.NativeManager.Button(MultiLanguageTextProvider.GetText("ImportMergeSameFiles") + "###ImportMergeSameFiles")) { importer.RenameFileNamesToMergeSameFiles(); } Manager.NativeManager.Spacing(); { var rootDir = new[] { importer.ResourceDestination == EfkPkgImporter.ResourceDestinationType.ResourceRootDirectory }; if (Manager.NativeManager.Checkbox(MultiLanguageTextProvider.GetText("ImportUseRootDir") + "###UseRootDir", rootDir)) { importer.ResourceDestination = rootDir[0] ? EfkPkgImporter.ResourceDestinationType.ResourceRootDirectory : EfkPkgImporter.ResourceDestinationType.RelativePath; importer.RenewIOStatus(); } if (importer.ResourceDestination == EfkPkgImporter.ResourceDestinationType.ResourceRootDirectory) { foreach (var root in importer.ResourceRoots) { if (Manager.NativeManager.InputText(root.Type.ToString(), root.RootPath)) { root.RootPath = Manager.NativeManager.GetInputTextResult(); importer.RenewIOStatus(); } } } } Manager.NativeManager.Spacing(); var size = Manager.NativeManager.GetContentRegionAvail(); UpdateFileList(new swig.Vec2(0, size.Y - 32 * dpiScale)); Manager.NativeManager.Spacing(); { var textImport = MultiLanguageTextProvider.GetText("Import"); var textCancel = MultiLanguageTextProvider.GetText("Cancel"); float buttonWidth = 100 * dpiScale; Manager.NativeManager.SetCursorPosX(Manager.NativeManager.GetContentRegionAvail().X / 2 - buttonWidth + 4 * dpiScale); if (Manager.NativeManager.Button(textImport, buttonWidth)) { try { var results = importer.Import(); if (results != null && results.Length == 1) { Commands.Open(results[0]); } } catch (Exception e) { var mb = new MessageBox(); mb.Show("Error", e.Message); } ShouldBeRemoved = true; } Manager.NativeManager.SameLine(); if (Manager.NativeManager.Button(textCancel, buttonWidth)) { ShouldBeRemoved = true; } } Manager.NativeManager.EndPopup(); } else { ShouldBeRemoved = true; } }
public static EditableValue Create(object o, System.Reflection.PropertyInfo info) { var ret = new EditableValue(); ret.Value = o; var p = info; var attributes = p.GetCustomAttributes(false); var undo = attributes.Where(_ => _.GetType() == typeof(UndoAttribute)).FirstOrDefault() as UndoAttribute; if (undo != null && !undo.Undo) { ret.IsUndoEnabled = false; } else { ret.IsUndoEnabled = true; } var shown = attributes.Where(_ => _.GetType() == typeof(ShownAttribute)).FirstOrDefault() as ShownAttribute; if (shown != null && !shown.Shown) { ret.IsShown = false; } var selector_attribute = (from a in attributes where a is Data.SelectorAttribute select a).FirstOrDefault() as Data.SelectorAttribute; if (selector_attribute != null) { ret.SelfSelectorID = selector_attribute.ID; } // collect selected values var selectedAttributes = attributes.OfType <Data.SelectedAttribute>(); if (selectedAttributes.Count() > 0) { if (selectedAttributes.Select(_ => _.ID).Distinct().Count() > 1) { throw new Exception("Same IDs are required."); } ret.TargetSelectorID = selectedAttributes.First().ID; ret.RequiredSelectorValues = selectedAttributes.Select(_ => _.Value).ToArray(); } var key = KeyAttribute.GetKey(attributes); var nameKey = key + "_Name"; if (string.IsNullOrEmpty(key)) { nameKey = info.ReflectedType.Name + "_" + info.Name + "_Name"; } if (MultiLanguageTextProvider.HasKey(nameKey)) { ret.Title = new MultiLanguageString(nameKey); } else { ret.Title = NameAttribute.GetName(attributes); //if (!string.IsNullOrEmpty(ret.Title.ToString())) //{ // System.IO.File.AppendAllText("kv.csv", nameKey + "," + "\"" + ret.Title.ToString() + "\"" + "\r\n"); //} } var descKey = key + "_Desc"; if (string.IsNullOrEmpty(key)) { descKey = info.ReflectedType.Name + "_" + info.Name + "_Desc"; } if (MultiLanguageTextProvider.HasKey(descKey)) { ret.Description = new MultiLanguageString(descKey); } else { ret.Description = DescriptionAttribute.GetDescription(attributes); //if(!string.IsNullOrEmpty(ret.Description.ToString())) //{ // System.IO.File.AppendAllText("kv.csv", descKey + "," + "\"" + ret.Description.ToString() + "\"" + "\r\n"); //} } var treeNode = attributes.OfType <TreeNodeAttribute>().FirstOrDefault(); if (treeNode != null) { ret.TreeNodeID = treeNode.id; if (MultiLanguageTextProvider.HasKey(treeNode.key)) { ret.Title = new MultiLanguageString(treeNode.key); } } return(ret); }
/// <summary> /// /// </summary> /// <param name="firstIndent"></param> /// <returns>last indent</returns> public IndentInformation Update(IndentInformation firstIndent) { var indent = firstIndent; if (isControlsChanged) { SetValue(bindingObject, 0); } controlRows.Lock(); for (int i = 0; i < controlRows.Internal.Count; i++) { var c = controlRows.Internal[i].Control as IParameterControl; if (controlRows.Internal[i].Children != null) { var item = controlRows.Internal[i]; if (string.IsNullOrEmpty(item.TreeNodeID)) { // Not tree view indent.Indent = controlRows[i].SelectorIndent; indent.IsSelecter = controlRows[i].IsSelector; indent = item.Children.Update(indent); } else { // Tree view var label = item.Label.ToString() + "###" + item.TreeNodeID; if (item.BindingValue is Data.Group.IToggleMode) { // CollapsingHeader with toggle Manager.NativeManager.Columns(1); Manager.NativeManager.Spacing(); var toggleId = "###" + item.TreeNodeID + "_toggle"; var toggleMode = item.BindingValue as Data.Group.IToggleMode; bool enabled = toggleMode.Enabled.GetValue(); bool opened = Manager.NativeManager.CollapsingHeaderWithToggle(label, swig.TreeNodeFlags.None, toggleId, ref enabled); if (enabled != toggleMode.Enabled.GetValue()) { toggleMode.Enabled.SetValue(enabled); } if (opened && !enabled) { string message = MultiLanguageTextProvider.GetText("TreeDisabled_Message"); Manager.NativeManager.TextWrapped(message); } Manager.NativeManager.Columns(2); if (opened && enabled) { indent = item.Children.Update(indent); } } else { // Simple CollapsingHeader Manager.NativeManager.Columns(1); Manager.NativeManager.Spacing(); bool opened = Manager.NativeManager.CollapsingHeader(label); Manager.NativeManager.Columns(2); if (opened) { indent = item.Children.Update(indent); } } //var opened = Manager.NativeManager.TreeNode(label); //if (opened) //{ // Manager.NativeManager.TreePop(); //} } continue; } if (c is Dummy) { continue; } if (c == null) { continue; } if ( (indent.Indent > controlRows[i].SelectorIndent || controlRows[i].IsSelector || (indent.Indent == controlRows[i].SelectorIndent && indent.IsSelecter))) { Manager.NativeManager.Separator(); } Manager.NativeManager.SetCursorPosY(Manager.NativeManager.GetCursorPosY() + Manager.TextOffsetY); Manager.NativeManager.Text(controlRows.Internal[i].Label.ToString()); if (Manager.NativeManager.IsItemHovered()) { Manager.NativeManager.BeginTooltip(); Manager.NativeManager.Text(controlRows.Internal[i].Label.ToString()); Manager.NativeManager.Separator(); Manager.NativeManager.Text(controlRows.Internal[i].Description.ToString()); Manager.NativeManager.EndTooltip(); } Manager.NativeManager.NextColumn(); Manager.NativeManager.PushItemWidth(-1); c.Update(); Manager.NativeManager.PopItemWidth(); Manager.NativeManager.NextColumn(); indent.Indent = controlRows[i].SelectorIndent; indent.IsSelecter = controlRows[i].IsSelector; } controlRows.Unlock(); if (isControlsChanged) { SetValue(bindingObject, 0); } return(indent); }
protected override void UpdateInternal() { var target = Manager.Network.Target; var port = new int[] { Manager.Network.Port }; var autoConnect = new bool[] { Manager.Network.AutoConnect }; var sendOnLoad = new bool[] { Manager.Network.SendOnLoad }; var sendOnEdit = new bool[] { Manager.Network.SendOnEdit }; var sendOnSave = new bool[] { Manager.Network.SendOnSave }; if (Manager.NativeManager.InputText(Resources.GetString("NetworkAddress") + "###target", target)) { Manager.Network.Target = Manager.NativeManager.GetInputTextResult(); } if (Manager.NativeManager.InputInt(Resources.GetString("Port") + "###port", port)) { Manager.Network.Port = port[0]; } if (Manager.NativeManager.Checkbox(Resources.GetString("AutoConnect") + "###autoConnect", autoConnect)) { Manager.Network.AutoConnect = autoConnect[0]; } if (Manager.NativeManager.Checkbox(Resources.GetString("TransmitDataOnLoad") + "###sendOnLoad", sendOnLoad)) { Manager.Network.SendOnLoad = sendOnLoad[0]; } if (Manager.NativeManager.Checkbox(Resources.GetString("TransmitDataOnEdit") + "###sendOnEdit", sendOnEdit)) { Manager.Network.SendOnEdit = sendOnEdit[0]; } if (Manager.NativeManager.Checkbox(Resources.GetString("TransmitDataOnSave") + "###sendOnSave", sendOnSave)) { Manager.Network.SendOnSave = sendOnSave[0]; } string state = string.Empty; string connect = string.Empty; bool enabled = false; if (Manager.Network.IsConnected()) { state = Resources.GetString("NetworkConnected"); connect = Resources.GetString("Disconnect"); enabled = true; } else { state = Resources.GetString("NetworkDisconnected"); connect = Resources.GetString("Connect"); enabled = false; } Manager.NativeManager.Text(state); if (Manager.NativeManager.Button(connect + "###connect")) { if (Manager.Network.IsConnected()) { Manager.Network.Disconnect(); } else { Manager.Network.Connect(); if (!Manager.Network.IsConnected()) { var errorMessage = MultiLanguageTextProvider.GetText("Network_FailedToConnect"); swig.GUIManager.show(errorMessage, "Error", swig.DialogStyle.Error, swig.DialogButtons.OK); } } } if (Manager.NativeManager.Button(Resources.GetString("SendData") + "###send")) { if (enabled) { Manager.Network.Send(); } } }
protected override void UpdateInternal() { var viewerParameter = Manager.Viewer.GetViewerParamater(); viewerParameter.GuideWidth = Core.Recording.RecordingWidth.Value; viewerParameter.GuideHeight = Core.Recording.RecordingHeight.Value; viewerParameter.RendersGuide = Core.Recording.IsRecordingGuideShown; float dpiScale = Manager.DpiScale; var w = new int [] { Manager.Viewer.GetViewerParamater().GuideWidth }; var h = new int [] { Manager.Viewer.GetViewerParamater().GuideHeight }; var showGuide = new bool[] { Manager.Viewer.GetViewerParamater().RendersGuide }; var startingFrame_ = new int[] { Core.Recording.RecordingStartingFrame.Value }; var endingFrame_ = new int[] { Core.Recording.RecordingEndingFrame.Value }; var freq_ = new int[] { Core.Recording.RecordingFrequency.Value }; var theNumberOfImageH_ = new int[] { Core.Recording.RecordingHorizontalCount.Value }; var areaTitle = Resources.GetString("Resolution"); var exportedFrameTitle = Resources.GetString("ExportedFrame"); var typeTitle = Resources.GetString("Format"); var optionsTitle = Resources.GetString("Options"); selectedTypeIndex = Core.Recording.RecordingExporter.GetValueAsInt(); selectedAlphaIndex = Core.Recording.RecordingTransparentMethod.GetValueAsInt(); selectedStorageTarget = Core.Recording.RecordingStorageTarget.GetValueAsInt(); // Recordingwindow { Manager.NativeManager.BeginChild("##RecordRes", new swig.Vec2(0, 140 * dpiScale), true, swig.WindowFlags.MenuBar); if (Manager.NativeManager.BeginMenuBar()) { if (Manager.NativeManager.BeginMenu(areaTitle + "##RecordResTitle")) { Manager.NativeManager.EndMenu(); } Manager.NativeManager.EndMenuBar(); } Manager.NativeManager.Columns(2); Manager.NativeManager.SetColumnWidth(0, 120 * dpiScale); Manager.NativeManager.Text(Resources.GetString("Width")); Manager.NativeManager.NextColumn(); Manager.NativeManager.PushItemWidth(-1); if (Manager.NativeManager.DragInt("###w", w)) { viewerParameter.GuideWidth = w[0]; Core.Recording.RecordingWidth.SetValueDirectly(w[0]); } Manager.NativeManager.PopItemWidth(); Manager.NativeManager.NextColumn(); Manager.NativeManager.Text(Resources.GetString("Height")); Manager.NativeManager.NextColumn(); Manager.NativeManager.PushItemWidth(-1); if (Manager.NativeManager.DragInt("###h", h)) { viewerParameter.GuideHeight = h[0]; Core.Recording.RecordingHeight.SetValueDirectly(h[0]); } Manager.NativeManager.PopItemWidth(); Manager.NativeManager.NextColumn(); Manager.NativeManager.Text(Resources.GetString("ShowGuide")); Manager.NativeManager.NextColumn(); if (Manager.NativeManager.Checkbox("###sg", showGuide)) { viewerParameter.RendersGuide = showGuide[0]; Core.Recording.IsRecordingGuideShown.SetValueDirectly(showGuide[0]); } // Scale Manager.NativeManager.NextColumn(); Manager.NativeManager.Text(scale_name.ToString()); if (Manager.NativeManager.IsItemHovered()) { Manager.NativeManager.SetTooltip(scale_desc.ToString()); } Manager.NativeManager.NextColumn(); var recordingScale = new int[] { Core.Recording.RecordingScale.Value }; if (Manager.NativeManager.DragInt("###RecScale", recordingScale)) { Core.Recording.RecordingScale.SetValue(recordingScale[0]); } Manager.NativeManager.Columns(1); Manager.NativeManager.EndChild(); } // Recordingwindow Manager.NativeManager.BeginChild("##OutputFrame", new swig.Vec2(0, 130 * dpiScale), true, swig.WindowFlags.MenuBar); if (Manager.NativeManager.BeginMenuBar()) { if (Manager.NativeManager.BeginMenu(exportedFrameTitle + "##OutputFrameTitle")) { Manager.NativeManager.EndMenu(); } Manager.NativeManager.EndMenuBar(); } Manager.NativeManager.Columns(2); Manager.NativeManager.SetColumnWidth(0, 120 * dpiScale); Manager.NativeManager.Text(Resources.GetString("StartFrame")); Manager.NativeManager.NextColumn(); Manager.NativeManager.PushItemWidth(-1); if (Manager.NativeManager.DragInt("###sf", startingFrame_)) { Core.Recording.RecordingStartingFrame.SetValueDirectly(startingFrame_[0]); } Manager.NativeManager.PopItemWidth(); Manager.NativeManager.NextColumn(); Manager.NativeManager.Text(Resources.GetString("EndFrame")); Manager.NativeManager.NextColumn(); Manager.NativeManager.PushItemWidth(-1); if (Manager.NativeManager.DragInt("###ef", endingFrame_)) { Core.Recording.RecordingEndingFrame.SetValueDirectly(endingFrame_[0]); } Manager.NativeManager.PopItemWidth(); Manager.NativeManager.NextColumn(); Manager.NativeManager.Text(Resources.GetString("Frequency_Frame")); Manager.NativeManager.NextColumn(); Manager.NativeManager.PushItemWidth(-1); if (Manager.NativeManager.DragInt("###ff", freq_)) { Core.Recording.RecordingFrequency.SetValueDirectly(freq_[0]); } Manager.NativeManager.PopItemWidth(); Manager.NativeManager.Columns(1); Manager.NativeManager.EndChild(); // ExportType float exportTypeChildHeight = (selectedTypeIndex == 0 ? 90 : 60) * dpiScale; Manager.NativeManager.BeginChild("##OutputType", new swig.Vec2(0, exportTypeChildHeight), true, swig.WindowFlags.MenuBar); if (Manager.NativeManager.BeginMenuBar()) { if (Manager.NativeManager.BeginMenu(typeTitle + "##OutputTypeTitle")) { Manager.NativeManager.EndMenu(); } Manager.NativeManager.EndMenuBar(); } Manager.NativeManager.Columns(2); Manager.NativeManager.SetColumnWidth(0, 120 * dpiScale); Manager.NativeManager.Text(Resources.GetString("ExportedFrame")); Manager.NativeManager.NextColumn(); Manager.NativeManager.PushItemWidth(-1); if (Manager.NativeManager.BeginCombo("###extype", selectedExportTypes[selectedTypeIndex], swig.ComboFlags.None)) { for (int i = 0; i < selectedExportTypes.Length; i++) { if (Manager.NativeManager.Selectable(selectedExportTypes[i])) { selectedTypeIndex = i; Core.Recording.RecordingExporter.SetValueDirectly((Data.RecordingExporterType)i); Manager.NativeManager.SetItemDefaultFocus(); } } Manager.NativeManager.EndCombo(); } Manager.NativeManager.PopItemWidth(); if (selectedTypeIndex == 0) { Manager.NativeManager.NextColumn(); Manager.NativeManager.Text(Resources.GetString("XCount")); Manager.NativeManager.NextColumn(); Manager.NativeManager.PushItemWidth(-1); if (Manager.NativeManager.DragInt("###tn", theNumberOfImageH_)) { Core.Recording.RecordingHorizontalCount.SetValueDirectly(theNumberOfImageH_[0]); } Manager.NativeManager.PopItemWidth(); } Manager.NativeManager.EndChild(); // Recordingwindow Manager.NativeManager.BeginChild("##Option", new swig.Vec2(0, 60 * dpiScale), true, swig.WindowFlags.MenuBar); if (Manager.NativeManager.BeginMenuBar()) { if (Manager.NativeManager.BeginMenu(optionsTitle + "##OptionTitle")) { Manager.NativeManager.EndMenu(); } Manager.NativeManager.EndMenuBar(); } Manager.NativeManager.Columns(2); Manager.NativeManager.SetColumnWidth(0, 120 * dpiScale); Manager.NativeManager.Text(Resources.GetString("MakeTransparent")); Manager.NativeManager.NextColumn(); Manager.NativeManager.PushItemWidth(-1); if (Manager.NativeManager.BeginCombo("###tr", selectedAlphaTypes[selectedAlphaIndex], swig.ComboFlags.None)) { for (int i = 0; i < selectedAlphaTypes.Length; i++) { if (Manager.NativeManager.Selectable(selectedAlphaTypes[i])) { selectedAlphaIndex = i; Core.Recording.RecordingTransparentMethod.SetValueDirectly((Data.RecordingTransparentMethodType)i); Manager.NativeManager.SetItemDefaultFocus(); } } Manager.NativeManager.EndCombo(); } Manager.NativeManager.PopItemWidth(); Manager.NativeManager.Columns(1); Manager.NativeManager.EndChild(); // Storage Manager.NativeManager.BeginChild("##Storage", new swig.Vec2(0, 60 * dpiScale), true, swig.WindowFlags.MenuBar); Manager.NativeManager.Columns(2); Manager.NativeManager.SetColumnWidth(0, 120 * dpiScale); Manager.NativeManager.Text(Resources.GetString("StorageTarget")); Manager.NativeManager.NextColumn(); Manager.NativeManager.PushItemWidth(-1); if (Manager.NativeManager.BeginCombo("###st", selectedStorageTargets[selectedStorageTarget], swig.ComboFlags.None)) { for (int i = 0; i < selectedStorageTargets.Length; i++) { if (Manager.NativeManager.Selectable(selectedStorageTargets[i])) { selectedStorageTarget = i; Core.Recording.RecordingStorageTarget.SetValueDirectly((Data.RecordingStorageTargetTyoe)i); Manager.NativeManager.SetItemDefaultFocus(); } } Manager.NativeManager.EndCombo(); } Manager.NativeManager.PopItemWidth(); Manager.NativeManager.Columns(1); Manager.NativeManager.EndChild(); Manager.Viewer.SetViewerParamater(viewerParameter); float buttonWidth = 100 * dpiScale; Manager.NativeManager.SetCursorPosX(Manager.NativeManager.GetContentRegionAvail().X / 2 - buttonWidth / 2); if (Manager.NativeManager.Button(Resources.GetString("Record") + "###btn", buttonWidth)) { var during = Core.Recording.RecordingEndingFrame.Value - Core.Recording.RecordingStartingFrame.Value; if (during < 0) { swig.GUIManager.show("出力フレームが存在しません。", "Error", swig.DialogStyle.Error, swig.DialogButtons.OK); //var mb = new Dialog.MessageBox(); //mb.Show("Error", "出力フレームが存在しません。"); } var count = during / Core.Recording.RecordingFrequency.Value + 1; var horizontalCount = Core.Recording.RecordingHorizontalCount.Value; if (Manager.Viewer != null) { var filter = string.Empty; if (selectedTypeIndex == 0) { filter = "png"; } else if (selectedTypeIndex == 1) { filter = "png"; } else if (selectedTypeIndex == 2) { filter = "gif"; } else if (selectedTypeIndex == 3) { filter = "avi"; } var result = swig.FileDialog.SaveDialog(filter, System.IO.Directory.GetCurrentDirectory()); if (string.IsNullOrEmpty(result)) { return; } var filename = result; if (System.IO.Path.GetExtension(filename) != "." + filter) { filename += "." + filter; } var viewer = Manager.Viewer; var param = Manager.Viewer.GetViewerParamater(); //if (viewer.LoadEffectFunc != null) { viewer.LoadEffectFunc(); } var tempDirectory = System.IO.Directory.GetCurrentDirectory(); System.IO.Directory.SetCurrentDirectory(Application.StartDirectory); Utils.Logger.Write(string.Format("SetCurrentDirectory : {0}", Application.StartDirectory)); string errorMessage = string.Empty; var startingFrame = Core.Recording.RecordingStartingFrame.Value; var freq = Core.Recording.RecordingFrequency.Value; var recordingParameter = new swig.RecordingParameter(); recordingParameter.Count = count; recordingParameter.HorizontalCount = horizontalCount; recordingParameter.Freq = freq; recordingParameter.OffsetFrame = startingFrame; recordingParameter.Transparence = (swig.TransparenceType)selectedAlphaIndex; recordingParameter.Scale = Core.Recording.RecordingScale.Value; errorMessage = MultiLanguageTextProvider.GetText("Error_FailedToSave"); bool recordResult = false; if (selectedTypeIndex == 0) { Utils.Logger.Write(string.Format("RecordSpriteSheet : {0}", filename)); recordResult = viewer.RecordSpriteSheet(filename, recordingParameter); } else if (selectedTypeIndex == 1) { Utils.Logger.Write(string.Format("RecordSprite : {0}", filename)); recordResult = viewer.RecordSprite(filename, recordingParameter); } else if (selectedTypeIndex == 2) { Utils.Logger.Write(string.Format("RecordAsGifAnimation : {0}", filename)); recordResult = viewer.RecordAsGifAnimation(filename, recordingParameter); } else if (selectedTypeIndex == 3) { Utils.Logger.Write(string.Format("RecordAsAVI : {0}", filename)); recordResult = viewer.RecordAsAVI(filename, recordingParameter); } if (recordResult) { Manager.NativeManager.OpenPopup("###RecorderProgress"); } else { swig.GUIManager.show(errorMessage, "Error", swig.DialogStyle.Error, swig.DialogButtons.OK); Utils.Logger.Write(string.Format("Record : Failed : {0}", errorMessage)); } System.IO.Directory.SetCurrentDirectory(tempDirectory); } } Manager.NativeManager.SetNextWindowSize(320, 0, swig.Cond.Always); UpdateProgressDialog(); }
public void Update() { if (isFirstUpdate) { Manager.NativeManager.OpenPopup(id); isFirstUpdate = false; } float dpiScale = Manager.DpiScale; Manager.NativeManager.SetNextWindowSize(500 * dpiScale, 400 * dpiScale, swig.Cond.Once); if (Manager.NativeManager.BeginPopupModal(title + id, ref opened)) { { var text = MultiLanguageTextProvider.GetText("ImportSourcePackage"); Manager.NativeManager.PushItemWidth(-1); Manager.NativeManager.Text(text); Manager.NativeManager.InputText("###SSourceFilePath", sourceFilePath, swig.InputTextFlags.ReadOnly); Manager.NativeManager.PopItemWidth(); } { var text = MultiLanguageTextProvider.GetText("ImportDestinationDirectory"); Manager.NativeManager.PushItemWidth(-Manager.NativeManager.GetTextLineHeightWithSpacing()); Manager.NativeManager.Text(text); string icon = (targetDirPathValid) ? Icons.CommonCheck : Icons.CommonError; if (Manager.NativeManager.InputText(icon + "###TargetDirPath", targetDirPath)) { targetDirPath = Manager.NativeManager.GetInputTextResult(); targetDirPathValid = Directory.Exists(targetDirPath); foreach (var file in EfkPkg.AllFiles) { importFiles[file].ValidationPath(targetDirPath); } } Manager.NativeManager.PopItemWidth(); } Manager.NativeManager.Spacing(); var size = Manager.NativeManager.GetContentRegionAvail(); UpdateFileList(new swig.Vec2(0, size.Y - 32 * dpiScale)); Manager.NativeManager.Spacing(); { var textImport = MultiLanguageTextProvider.GetText("Import"); var textCancel = MultiLanguageTextProvider.GetText("Cancel"); float buttonWidth = 100 * dpiScale; Manager.NativeManager.SetCursorPosX(Manager.NativeManager.GetContentRegionAvail().X / 2 - buttonWidth + 4 * dpiScale); if (Manager.NativeManager.Button(textImport, buttonWidth)) { var files = importFiles .Where(kv => kv.Value.DoesImport) .Select(kv => kv.Key) .ToArray(); foreach (var file in files) { file.Name = importFiles[file].DestinationName; } try { EfkPkg.ExtractFiles(targetDirPath, files); } catch (Exception e) { var mb = new MessageBox(); mb.Show("Error", e.Message); } ShouldBeRemoved = true; } Manager.NativeManager.SameLine(); if (Manager.NativeManager.Button(textCancel, buttonWidth)) { ShouldBeRemoved = true; } } Manager.NativeManager.EndPopup(); } else { ShouldBeRemoved = true; } }
private void RestartValue_OnChanged(object sender, ChangedValueEventArgs e_) { swig.GUIManager.show(MultiLanguageTextProvider.GetText("ChangeRestartValues_Message"), "Info", swig.DialogStyle.Info, swig.DialogButtons.OK); }
public static void Update() { if (isFontSizeDirtied) { NativeManager.InvalidateFont(); var appDirectory = Manager.GetEntryDirectory(); var type = Core.Option.Font.Value; if (type == Data.FontType.Normal) { NativeManager.AddFontFromFileTTF(System.IO.Path.Combine(appDirectory, MultiLanguageTextProvider.GetText("Font_Normal")), Core.Option.FontSize.Value); } else if (type == Data.FontType.Bold) { NativeManager.AddFontFromFileTTF(System.IO.Path.Combine(appDirectory, MultiLanguageTextProvider.GetText("Font_Bold")), Core.Option.FontSize.Value); } isFontSizeDirtied = false; } // Reset NativeManager.SetNextDockRate(0.5f); NativeManager.SetNextDock(swig.DockSlot.Tab); NativeManager.ResetNextParentDock(); IO.Update(); Shortcuts.Update(); Network.Update(); var handle = false; if (!handle) { if (!NativeManager.IsAnyItemActive()) { Shortcuts.ProcessCmdKey(ref handle); } } var mousePos = NativeManager.GetMousePosition(); if (isFirstUpdate) { mousePos_pre = mousePos; } if ((effectViewer == null && !NativeManager.IsAnyWindowHovered()) || (effectViewer != null && effectViewer.IsHovered)) { if (NativeManager.GetMouseButton(2) > 0 || (NativeManager.GetMouseButton(1) > 0 && (Manager.NativeManager.IsKeyDown(LEFT_SHIFT) || Manager.NativeManager.IsKeyDown(RIGHT_SHIFT)))) { var dx = mousePos.X - mousePos_pre.X; var dy = mousePos.Y - mousePos_pre.Y; if (Core.Option.ViewerMode.Value == Data.OptionValues.ViewMode._3D) { Viewer.Slide(dx / 30.0f, dy / 30.0f); } else if (Core.Option.ViewerMode.Value == Data.OptionValues.ViewMode._2D) { Viewer.Slide(dx / 16.0f, dy / 16.0f); } } else if (NativeManager.GetMouseWheel() != 0) { Viewer.Zoom(NativeManager.GetMouseWheel()); } else if (NativeManager.GetMouseButton(1) > 0 && (NativeManager.GetMouseButton(1) > 0 && (Manager.NativeManager.IsKeyDown(LEFT_CONTROL) || Manager.NativeManager.IsKeyDown(RIGHT_CONTROL)))) { var dx = mousePos.X - mousePos_pre.X; var dy = mousePos.Y - mousePos_pre.Y; Viewer.Zoom(dy * 0.25f); } else if (NativeManager.GetMouseButton(1) > 0) { var dx = mousePos.X - mousePos_pre.X; var dy = mousePos.Y - mousePos_pre.Y; if (Core.Option.ViewerMode.Value == Data.OptionValues.ViewMode._3D) { Viewer.Rotate(dx, dy); } else if (Core.Option.ViewerMode.Value == Data.OptionValues.ViewMode._2D) { Viewer.Slide(dx / 16.0f, dy / 16.0f); } } } mousePos_pre = mousePos; Viewer.UpdateViewer(); Native.UpdateWindow(); Native.ClearWindow(50, 50, 50, 0); if (effectViewer == null) { Native.RenderWindow(); } NativeManager.ResetGUI(); if (resetCount < 0) { resetCount++; if (resetCount == 0) { ResetWindowActually(); } } if (resizedCount > 0) { resizedCount--; } Controls.Lock(); foreach (var c in Controls.Internal) { c.Update(); } foreach (var _ in Controls.Internal) { if (!_.ShouldBeRemoved) { continue; } var dp = _ as Dock.DockPanel; if (dp != null) { dp.DispatchDisposed(); } } foreach (var _ in Controls.Internal) { if (!_.ShouldBeRemoved) { continue; } Controls.Remove(_); } Controls.Unlock(); for (int i = 0; i < dockTypes.Length; i++) { if (panels[i] != null && panels[i].ShouldBeRemoved) { panels[i] = null; } } NativeManager.RenderGUI(resizedCount == 0); Native.Present(); NativeManager.Present(); isFirstUpdate = false; // TODO more smart // When minimized, suppress CPU activity if (actualWidth == 0) { System.Threading.Thread.Sleep(16); } }
public LanguageSelector() { id = "###" + Manager.GetUniqueID().ToString(); FieldNames.AddRange(LanguageTable.Languages.Select(_ => MultiLanguageTextProvider.GetText("Language_" + _))); }