public override void Edit() { dlgEdit.Value = new NodeData() { NodeName = Name, VarName = VarName }; if (dlgEdit.ShowDialog() == DialogResult.OK) { Name = ((NodeData)(dlgEdit.Value)).NodeName; VarName = ((NodeData)(dlgEdit.Value)).VarName; } OnPropertyChanged("Note"); }
public override void Edit() { dlgEdit.Value = new NodeData() { NodeName = Name, Period = period }; if (dlgEdit.ShowDialog() == DialogResult.OK) { Name = ((NodeData)(dlgEdit.Value)).NodeName; period = ((NodeData)(dlgEdit.Value)).Period; OnPropertyChanged("Note"); } }
/// <summary> /// Handles the ui settings clicked event. /// </summary> private void HandleUiSettingsClickedEvent() { Settings.Default.Save(); //save any previous changes, to be sure the most current settings are persisted. using (PropertyDialog dlg = new PropertyDialog(new DisplayableUiSettings(Settings.Default), "UI Settings")) { DialogResult result = dlg.ShowDialog(); if (result.Equals(DialogResult.OK)) //confirmed? { Settings.Default.Save(); //save what was changed } else //not confirmed { Settings.Default.Reload(); //restore back } } }
/// <summary> /// Handles the edit compilation clicked event. /// </summary> private void HandleEditCompilationClickedEvent() { if (Core.Model.Instance.Compilation != null) //there is any? { //create visual copy DisplayCompilation displayCompilation = new DisplayCompilation(Core.Model.Instance.Compilation); using (PropertyDialog propertyDialog = new PropertyDialog(displayCompilation, "Edit compilation")) { if (propertyDialog.ShowDialog() == DialogResult.OK) { Core.Model.Instance.Compilation.Title = displayCompilation.Title; //use the changed data Core.Model.Instance.Compilation.IsDirty = true; } } } }
public override void Edit() { dlgEdit.Value = new NodeData() { NodeName = Name, User = currentUser }; if (dlgEdit.ShowDialog() == DialogResult.OK) { Name = ((NodeData)(dlgEdit.Value)).NodeName; currentUser = ((NodeData)(dlgEdit.Value)).User; controller = new Controller(currentUser); } OnPropertyChanged("Note"); }
private void Options_Click(object sender, RoutedEventArgs e) { var dlg = new PropertyDialog() { Owner = this }; var options = new OptionsViewModel(); dlg.DataContext = options; dlg.Title = "Options"; if (dlg.ShowDialog().Value) { options.Save(); } }
public override void Edit() { dlgEdit.Value = new NodeData() { NodeName = Name, Min = Min, Max = Max, }; if (dlgEdit.ShowDialog() == DialogResult.OK) { Name = ((NodeData)(dlgEdit.Value)).NodeName; Min = ((NodeData)(dlgEdit.Value)).Min; Max = ((NodeData)(dlgEdit.Value)).Max; } OnPropertyChanged("Note"); }
/// <summary> /// /// </summary> public static void SelectAudioPlaybackDevice() { // TODO: save selected device var c = new DefaultDeviceSelecter() { Device = DefaultDevice }; using (PropertyDialog d = new PropertyDialog("Select Audio Device", c)) { if (d.ShowDialog() == System.Windows.Forms.DialogResult.OK) { DefaultDevice = c.Device; } } }
/// <summary> /// Handles the settings clicked event. /// </summary> private void HandleSettingsClickedEvent() { Core.Model.Instance.Settings.Save(); //be sure to let everything persist before any possible change using ( PropertyDialog dlg = new PropertyDialog(new DisplayableCoreSettings(Core.Model.Instance.Settings), "Behavioral Settings") ) { DialogResult result = dlg.ShowDialog(); if (result.Equals(DialogResult.OK)) //confirmed? { Core.Model.Instance.Settings.Save(); //save what was changed } else //not confirmed { Core.Model.Instance.Settings.Reload(); //revert to saved } } }
private void ExecuteEditSettings() { if (_configurationReaderWriter != null) { PropertyDialog propertyDialog = new PropertyDialog(); SpecIfPluginConfiguration configuration = _configurationReaderWriter.GetConfiguration(); propertyDialog.SetPropertyData(configuration); propertyDialog.ShowDialog(); _configurationReaderWriter.StoreConfiguration(configuration); InitializeDataProviders(); } }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void renameButton_Click(object sender, EventArgs e) { if (entryList.SelectedObject is SEMEntry entry) { var renameBox = new RenameBox(); renameBox.NewName = entry.Name; using (PropertyDialog d = new PropertyDialog("Rename", renameBox)) { if (d.ShowDialog() == DialogResult.OK) { entry.Name = renameBox.NewName; } } } }
void AddWidget(string typeID, Widget template, bool showDialog) { if (showDialog) { var dialog = new PropertyDialog(); dialog.SelectedObject = template; if (dialog.ShowDialog(this) == System.Windows.Forms.DialogResult.OK) { AddWidgetCommand command = new AddWidgetCommand(SelectedTopics, typeID, template); ExecuteCommand(command); } } else { AddWidgetCommand command = new AddWidgetCommand(SelectedTopics, typeID, template); ExecuteCommand(command); } }
/// <summary> /// /// </summary> /// <param name="toReplace"></param> public static void ReplaceModelFromFile(HSD_JOBJ toReplace) { var f = Tools.FileIO.OpenFile("Supported Formats (*.dae, *.obj)|*.dae;*.obj;*.fbx;*.smd"); if (f != null) { var settings = new ModelImportSettings(); using (PropertyDialog d = new PropertyDialog("Model Import Options", settings)) { if (d.ShowDialog() == System.Windows.Forms.DialogResult.OK) { var newroot = ImportModel(f, settings); toReplace._s.SetFromStruct(newroot._s); } } } }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void buttonAddEntry_Click(object sender, EventArgs e) { var name = new SEMName(); using (PropertyDialog d = new PropertyDialog("SSM Name", name)) { if (d.ShowDialog() == DialogResult.OK) { entryList.AddItem(new SEMEntry() { SoundBank = new SSM() { Name = name.Name.ToLower().EndsWith(".ssm") ? name.Name : name.Name + ".ssm" }, Scripts = new SEMScript[0] }); } } }
// Edit dialog public override void Edit() { dlgEdit.Value = new NodeData() { NodeName = Name, VarName = varName, Value = value, FrameCount = frameCount, Easing = easing, }; if (dlgEdit.ShowDialog() == DialogResult.OK) { Name = ((NodeData)(dlgEdit.Value)).NodeName; varName = ((NodeData)(dlgEdit.Value)).VarName; value = ((NodeData)(dlgEdit.Value)).Value; frameCount = ((NodeData)(dlgEdit.Value)).FrameCount; easing = ((NodeData)(dlgEdit.Value)).Easing; } OnPropertyChanged("Note"); }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void regenerateAnimationToolStripMenuItem_Click(object sender, EventArgs e) { if (sssEditor.SelectedObjects.Length > 0) { using (PropertyDialog d = new PropertyDialog("Menu Animation Generator", sssEditor.SelectedObjects.Select(a => ((MEXStageIconEntry)a).Animation).ToArray())) { d.ShowDialog(); } /*using (PopoutJointAnimationEditor popout = new PopoutJointAnimationEditor()) * { * // create a proxy structure/animation? * HSD_JOBJ root = null; * JointAnimManager manager = new JointAnimManager(); * * foreach(MEXStageIconEntry sel in sssEditor.SelectedObjects) * { * if(sel.Joint != null && sel.AnimJoint != null) * { * if (root == null) * root = sel.Joint; * else * root.Add(sel.Joint); * var man = new JointAnimManager(); * man.FromAnimJoint(sel.AnimJoint); * manager.Nodes.AddRange(man.Nodes); * } * } * * // use * popout.SetJoint(root, manager); * popout.ShowDialog(); * * var list = root.BreathFirstList; * foreach (var j in list) * j.Next = null; * * // TODO: save anim changes * }*/ } }
protected override bool GetOptions() { ExportOptions.Orientation = Options.Current.GetValue("Export.PDF.PageOrientation", Model.PageOrientation.Landscape); ExportOptions.WithBackground = Options.Current.GetValue("Export.PDF.WithBackground", true); var dialog = new PropertyDialog(ExportOptions); dialog.Text = Lang._("Options"); dialog.PropertySort = System.Windows.Forms.PropertySort.Alphabetical; if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { Options.Current.SetValue("Export.PDF.PageOrientation", ExportOptions.Orientation); Options.Current.SetValue("Export.PDF.WithBackground", ExportOptions.WithBackground); return(base.GetOptions()); } else { return(false); } }
/// <summary> /// Display property grid dialog. Changes to properties are reflected immediately. /// </summary> public static void ShowProperties(Action refreshDelegate) { try { //PropertiesViewer pv = new PropertiesViewer(SettingsBase.AsStatic, Refresh); PropertyDialog pv = new PropertyDialog(Settings, refreshDelegate); #if debug //pv.Show();//dialog properties grid validation does refresh #else pv.ShowDialog();//dialog properties grid validation does refresh pv.Dispose(); #endif } catch (Exception ex) { Log.Write(ex, MethodBase.GetCurrentMethod(), EventLogEntryType.Error); throw; } }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void generateNameTagToolStripMenuItem_Click(object sender, EventArgs e) { if (sssEditor.SelectedObject is MEXStageIconEntry entry) { var settings = new NameTagSettings(); using (PropertyDialog d = new PropertyDialog("Name Tag Settings", settings)) { if (d.ShowDialog() == DialogResult.OK) { using (Bitmap bmp = MexMapGenerator.GenerateStageName(settings.StageName, settings.Location)) { if (bmp == null) { MessageBox.Show("Could not find fonts \"Palatino Linotype\" and/or \"A-OTF Folk Pro H\"", "Font not Found", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } entry.NameTOBJ = TOBJConverter.BitmapToTOBJ(bmp, HSDRaw.GX.GXTexFmt.I4, HSDRaw.GX.GXTlutFmt.IA8); } } } } }
public void MouseDown(CommandProperty cp) { if (null != cp.Invoke) { cp.Invoke(); } var dlg = new PropertyDialog { DataContext = cp.Data, Title = cp.LinkText, MinHeight = 500 }; if (dlg.ShowDialog().Value) { if (null != cp.InvokeData) { cp.InvokeData(cp.Data); } } }
public void MouseDown(CommandProperty cp) { if (null != cp.Invoke) { cp.Invoke(); } var list = cp.Data as IList; if (null == list) { return; } var form = Activator.CreateInstance(FormType); var dlg = new PropertyDialog { DataContext = form, Title = cp.LinkText, MinHeight = 500 }; if (dlg.ShowDialog().Value) { if (null != cp.InvokeData) { cp.InvokeData(form); } var newItem = FormType.GetProperty(DataProperty).GetValue(form, null); list.Add(newItem); } }
public SubactionTableContextMenu() : base() { MenuItem Export = new MenuItem("Import Subaction Data From File"); Export.Click += (sender, args) => { var f = Tools.FileIO.OpenFile(ApplicationSettings.HSDFileFilter); if (f != null && MainForm.SelectedDataNode.Accessor is SBM_FighterActionTable table) { var dataToImport = new SBM_FighterActionTable(); dataToImport._s = new HSDRawFile(f).Roots[0].Data._s; if (dataToImport.Count == table.Count) { var importTable = dataToImport.Commands; var newTable = table.Commands; for (int i = 0; i < table.Count; i++) { newTable[i].SubAction = importTable[i].SubAction; } table.Commands = newTable; } } }; MenuItems.Add(Export); #if DEBUG MenuItem rename = new MenuItem("Rename Symbols"); rename.Click += (sender, args) => { if (MainForm.SelectedDataNode.Accessor is SBM_FighterActionTable table) { var prop = new SubactionTableRename(); using (PropertyDialog d = new PropertyDialog("Fighter Symbol Rename", prop)) { if (d.ShowDialog() == DialogResult.OK) { var tables = table.Commands; foreach (var c in tables) { if (c.SymbolName != null && !string.IsNullOrEmpty(c.SymbolName.Value)) { var sym = c.SymbolName.Value; var newsym = System.Text.RegularExpressions.Regex.Replace(sym, @"(?=Ply)(.)*(?=5K)", prop.Name);; c.SymbolName.Value = newsym; } } table.Commands = tables; } } } }; MenuItems.Add(rename); #endif }
private void bGroups_Click(object sender, System.EventArgs e) { PropertyDialog pd = new PropertyDialog(_Draw, _ReportItems, PropertyTypeEnum.Grouping); try { DialogResult dr = pd.ShowDialog(); if (pd.Changed || dr == DialogResult.OK) { //_DrawPanel.Invalidate(); TODO need to force change somehow????? } } finally { pd.Dispose(); } }
public void MouseDown(CommandProperty cp) { if (null != cp.Invoke) { cp.Invoke(); } var list = cp.Data as IEnumerable; if (null == list) { return; } var converter = Activator.CreateInstance(DataConverter) as IValueConverter; if (null == converter) { return; } var converted = new List <string>(); Type sourceType = null; foreach (var it in list) { var convertedItem = converter.Convert(it, typeof(string), cp, CultureInfo.CurrentCulture) as string; if (null != convertedItem) { converted.Add(convertedItem); } if (null == sourceType) { sourceType = it.GetType(); } } var form = new PickListForm { PickList = converted }; var dlg = new PropertyDialog { DataContext = form, Title = cp.LinkText, MinHeight = 500 }; if (dlg.ShowDialog().Value) { if (null != cp.InvokeData) { var convertedBack = converter.ConvertBack(form.SelectItem, sourceType ?? typeof(string), cp, CultureInfo.CurrentCulture); if (null != cp.InvokeData) { cp.InvokeData(convertedBack); } } } }
/// <summary> /// Handles an event from the event broker /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void EventBroker_EventOccured(object sender, EventArgs <string> e) { switch (e.Data) { case "Menu:OpenCompilationClicked": { HandleOpenCompilationClickedEvent(); break; } case "Menu:EditCompilationClicked": { HandleEditCompilationClickedEvent(); break; } case "Menu:AboutClicked": { HandleAboutClickedEvent(); break; } case "Menu:OnlineHelpClicked": { HandleOnlineHelpClickedEvent(); break; } case "Menu:ExitClicked": { HandleExitClickedEvent(); break; } case "Menu:SettingsClicked": { HandleSettingsClickedEvent(); break; } case "Menu:UiSettingsClicked": { HandleUiSettingsClickedEvent(); break; } case "Menu:CreateNewCompilationClicked": { HandleCreateNewCompilationClickedEvent(); break; } case "Menu:AddCueClicked": { HandleAddCueClickedEvent(); break; } case "Menu:CreateCueHereClicked": { Core.Model.Instance.CreateCueHere(); Core.Model.Instance.Compilation.IsDirty = true; break; } case "Menu:DeleteSelectedCue": { Core.Model.Instance.RemoveSelectedCue(); Core.Model.Instance.Compilation.IsDirty = true; break; } case "Menu:MoveUpSelectedCue": { Core.Model.Instance.MoveSelectedCue(-1); Core.Model.Instance.Compilation.IsDirty = true; break; } case "Menu:MoveDownSelectedCue": { Core.Model.Instance.MoveSelectedCue(+1); Core.Model.Instance.Compilation.IsDirty = true; break; } case "Menu:MoveUpSelectedTrack": { Core.Model.Instance.MoveSelectedTrack(-1); Core.Model.Instance.Compilation.IsDirty = true; break; } case "Menu:MoveDownSelectedTrack": { Core.Model.Instance.MoveSelectedTrack(+1); Core.Model.Instance.Compilation.IsDirty = true; break; } case "Menu:DeleteSelectedTrack": { Core.Model.Instance.RemoveSelectedTrack(); Core.Model.Instance.Compilation.IsDirty = true; break; } case "Menu:CloneSelectedTrack": { Core.Model.Instance.CloneSelectedTrack(); Core.Model.Instance.Compilation.IsDirty = true; break; } case "Menu:EditSelectedCue": { if (Core.Model.Instance.SelectedCue != null) //there is any selected? { Cue cloneCue = Core.Model.Instance.SelectedCue.Clone(); //clone for private manipulation using (PropertyDialog propertyDialog = new PropertyDialog(cloneCue, "Edit cue")) { propertyDialog.Height = 353; if (propertyDialog.ShowDialog() == DialogResult.OK) { Core.Model.Instance.SelectedTrack.Cues.Replace(Core.Model.Instance.SelectedCue, cloneCue); //assign back, causing an update of the model Core.Model.Instance.SelectedCue = cloneCue; //use the new as selected Core.Model.Instance.Compilation.IsDirty = true; } } } break; } case "Menu:AddTrackClicked": { HandleAddTrackClickedEvent(); break; } case "Menu:EditSelectedTrack": { if (Core.Model.Instance.SelectedTrack != null) //there is any selected? { DisplayTrack displayTrack = new DisplayTrack(Core.Model.Instance.SelectedTrack.Clone()); //clone for private manipulation using (PropertyDialog propertyDialog = new PropertyDialog(displayTrack, "Edit track")) { propertyDialog.Height = 393; propertyDialog.Width = 800; //to have more room for the file name. if (propertyDialog.ShowDialog() == DialogResult.OK) { Core.Model.Instance.Compilation.Tracks.Replace(Core.Model.Instance.SelectedTrack, displayTrack.Model); //assign back, causing an update of the model Core.Model.Instance.SelectedTrack = displayTrack.Model; //use the new as selected Core.Model.Instance.Compilation.IsDirty = true; } } } break; } case "Menu:SaveFile": { HandleSaveFileEvent(); break; } case "Menu:SaveFileAs": { HandleSaveFileAsEvent(); break; } case "Menu:ExportFile": { HandleExportFileEvent(); break; } default: break; } }
public static HSD_DOBJ GenerateOutlineMesh(HSD_DOBJ DOBJ) { var settings = new OutlineSettings(); using (PropertyDialog d = new PropertyDialog("Outline Settings", settings)) { if (d.ShowDialog() != DialogResult.OK) { return(null); } } var pobjGen = new POBJ_Generator(); pobjGen.UseTriangleStrips = settings.UseStrips; var newDOBJ = new HSD_DOBJ(); newDOBJ.Mobj = new HSD_MOBJ() { Material = new HSD_Material() { AmbientColor = Color.White, SpecularColor = Color.Black, DiffuseColor = settings.Color, DIF_A = 255, SPC_A = 255, AMB_A = 255, Shininess = 50, Alpha = 1 }, RenderFlags = RENDER_MODE.CONSTANT }; foreach (var pobj in DOBJ.Pobj.List) { var dl = pobj.ToDisplayList(); var vertices = dl.Vertices; GXAttribName[] attrs = new GXAttribName[] { GXAttribName.GX_VA_POS, GXAttribName.GX_VA_NULL }; if (pobj.HasAttribute(GXAttribName.GX_VA_PNMTXIDX)) { attrs = new GXAttribName[] { GXAttribName.GX_VA_PNMTXIDX, GXAttribName.GX_VA_POS, GXAttribName.GX_VA_NULL }; } List <GX_Vertex> newVerties = new List <GX_Vertex>(); var offset = 0; foreach (var prim in dl.Primitives) { var verts = vertices.GetRange(offset, prim.Count); offset += prim.Count; switch (prim.PrimitiveType) { case GXPrimitiveType.Quads: verts = TriangleConverter.QuadToList(verts); break; case GXPrimitiveType.TriangleStrip: verts = TriangleConverter.StripToList(verts); break; case GXPrimitiveType.Triangles: break; default: Console.WriteLine(prim.PrimitiveType); break; } newVerties.AddRange(verts); } // extrude for (int i = 0; i < newVerties.Count; i++) { var v = newVerties[i]; v.POS.X += v.NRM.X * settings.Size; v.POS.Y += v.NRM.Y * settings.Size; v.POS.Z += v.NRM.Z * settings.Size; //v.CLR0.R = settings.Color.R / 255f; //v.CLR0.G = settings.Color.G / 255f; //v.CLR0.B = settings.Color.B / 255f; //v.CLR0.A = settings.Color.A / 255f; newVerties[i] = v; } // invert faces for (int i = 0; i < newVerties.Count; i += 3) { var temp = newVerties[i]; newVerties[i] = newVerties[i + 2]; newVerties[i + 2] = temp; } var newpobj = pobjGen.CreatePOBJsFromTriangleList(newVerties, attrs, dl.Envelopes); foreach (var p in newpobj.List) { p.Flags |= POBJ_FLAG.CULLBACK | POBJ_FLAG.UNKNOWN1; } if (newDOBJ.Pobj == null) { newDOBJ.Pobj = newpobj; } else { newDOBJ.Pobj.Add(newpobj); } } pobjGen.SaveChanges(); return(newDOBJ); }
private void menuTableProperties_Click(object sender, EventArgs e) { if (_DrawPanel.SelectedCount != 1) return; XmlNode riNode = _DrawPanel.SelectedList[0]; XmlNode table = _DrawPanel.GetTableFromReportItem(riNode); if (table == null) return; XmlNode tc = _DrawPanel.GetTableColumn(riNode); XmlNode tr = _DrawPanel.GetTableRow(riNode); List<XmlNode> ar = new List<XmlNode>(); // need to put this is a list for dialog to handle ar.Add(table); _Undo.StartUndoGroup("Table Dialog"); PropertyDialog pd = new PropertyDialog(_DrawPanel, ar, PropertyTypeEnum.ReportItems, tc, tr); try { DialogResult dr = pd.ShowDialog(this); _Undo.EndUndoGroup(pd.Changed || dr == DialogResult.OK); if (pd.Changed || dr == DialogResult.OK) { ReportChanged(this, new EventArgs()); _DrawPanel.Invalidate(); } } finally { pd.Dispose(); } }
private void DoPropertyDialog(PropertyTypeEnum type) { this.StartUndoGroup("Dialog"); PropertyDialog pd = new PropertyDialog(_DrawPanel, _DrawPanel.SelectedList, type); try { DialogResult dr = pd.ShowDialog(this); this.EndUndoGroup(pd.Changed || dr == DialogResult.OK); if (pd.Changed || dr == DialogResult.OK) { ReportChanged(this, new EventArgs()); _DrawPanel.Invalidate(); } } finally { pd.Dispose(); } SetFocus(); }
private void menuTableEditGroup_Click(object sender, EventArgs e) { if (_DrawPanel.SelectedCount != 1) return; MenuItem menu = sender as MenuItem; if (menu == null) return; string gname = menu.Text; XmlNode cNode = _DrawPanel.SelectedList[0]; _Undo.StartUndoGroup("Dialog Table Group Edit"); XmlNode tblGroup = _DrawPanel.GetTableGroup(cNode, gname); List<XmlNode> ar = new List<XmlNode>(); // need to put this is a list for dialog to handle ar.Add(tblGroup); PropertyDialog pd = new PropertyDialog(_DrawPanel, ar, PropertyTypeEnum.Grouping); try { DialogResult dr = pd.ShowDialog(this); _Undo.EndUndoGroup(pd.Changed || dr == DialogResult.OK); if (pd.Changed || dr == DialogResult.OK) { ReportChanged(this, new EventArgs()); _DrawPanel.Invalidate(); } } finally { pd.Dispose(); } }
private void menuTableInsertGroup_Click(object sender, EventArgs e) { if (_DrawPanel.SelectedCount != 1) return; XmlNode cNode = _DrawPanel.SelectedList[0]; _Undo.StartUndoGroup("Insert Table Group"); XmlNode tblGroup = _DrawPanel.InsertTableGroup(cNode); if (tblGroup == null) { _Undo.EndUndoGroup(false); return; } List<XmlNode> ar = new List<XmlNode>(); // need to put this is a list for dialog to handle ar.Add(tblGroup); PropertyDialog pd = new PropertyDialog(_DrawPanel, ar, PropertyTypeEnum.Grouping); try { DialogResult dr = pd.ShowDialog(this); if (pd.Changed || dr == DialogResult.OK) { _Undo.EndUndoGroup(true); ReportChanged(this, new EventArgs()); _DrawPanel.Invalidate(); } else { _DrawPanel.DeleteTableGroup(tblGroup); _Undo.EndUndoGroup(false); } } finally { pd.Dispose(); } }
public SubactionTableContextMenu() : base() { MenuItem Export = new MenuItem("Import Subaction Data From File"); Export.Click += (sender, args) => { var f = Tools.FileIO.OpenFile(ApplicationSettings.HSDFileFilter); if (f != null && MainForm.SelectedDataNode.Accessor is SBM_FighterActionTable table) { var dataToImport = new SBM_FighterActionTable(); dataToImport._s = new HSDRawFile(f).Roots[0].Data._s; if (dataToImport.Count == table.Count) { var importTable = dataToImport.Commands; var newTable = table.Commands; for (int i = 0; i < table.Count; i++) { newTable[i].SubAction = importTable[i].SubAction; } table.Commands = newTable; } } }; MenuItems.Add(Export); #if DEBUG MenuItem rename = new MenuItem("Rename Symbols"); rename.Click += (sender, args) => { if (MainForm.SelectedDataNode.Accessor is SBM_FighterActionTable table) { var prop = new SubactionTableRename(); using (PropertyDialog d = new PropertyDialog("Fighter Symbol Rename", prop)) { if (d.ShowDialog() == DialogResult.OK) { var tables = table.Commands; foreach (var c in tables) { if (c.SymbolName != null && !string.IsNullOrEmpty(c.SymbolName.Value)) { var sym = c.SymbolName.Value; var newsym = System.Text.RegularExpressions.Regex.Replace(sym, @"(?=Ply)(.)*(?=5K)", prop.Name);; c.SymbolName.Value = newsym; } } table.Commands = tables; } } } }; MenuItems.Add(rename); MenuItem bonemap = new MenuItem("Remap Bone IDs"); bonemap.Click += (sender, args) => { if (MainForm.SelectedDataNode.Accessor is SBM_FighterActionTable table) { var source = Tools.FileIO.OpenFile("Current Bone INI (*.ini)|*.ini"); if (source == null) { return; } var target = Tools.FileIO.OpenFile("New Bone INI (*.ini)|*.ini"); if (target == null) { return; } var sini = new Tools.JointMap(source); var tini = new Tools.JointMap(target); var tables = table.Commands; foreach (var c in tables) { var data = c.SubAction._s.GetData(); Tools.SubactionManager.EditSubactionData( ref data, (Tools.Subaction sa, ref int[] p) => { // create gfx if (sa.Code == 10 << 2) { p[0] = tini.IndexOf(sini[p[0]]); } // create hitbox if (sa.Code == 11 << 2) { p[3] = tini.IndexOf(sini[p[3]]); } // set bone collision state if (sa.Code == 28 << 2) { p[0] = tini.IndexOf(sini[p[0]]); } // enable ragdoll if (sa.Code == 50 << 2) { p[0] = tini.IndexOf(sini[p[0]]); } }, Tools.SubactionGroup.Fighter); c.SubAction._s.SetData(data); } table.Commands = tables; } }; MenuItems.Add(bonemap); MenuItem soundid = new MenuItem("MEX: Make Sound IDs Portable "); soundid.Click += (sender, args) => { if (MainForm.SelectedDataNode.Accessor is SBM_FighterActionTable table) { { { var tables = table.Commands; foreach (var c in tables) { var data = c.SubAction._s.GetData(); Tools.SubactionManager.EditSubactionData( ref data, (Tools.Subaction sa, ref int[] p) => { if (sa.Code == 17 << 2) { p[2] = (p[2] % 1000) + 5000; } if (sa.Code == 54 << 2) { p[1] = (p[1] % 1000) + 5000; } if (sa.Code == 55 << 2) { p[1] = (p[1] % 1000) + 5000; } }, Tools.SubactionGroup.Fighter); c.SubAction._s.SetData(data); } table.Commands = tables; } } } }; MenuItems.Add(soundid); #endif }
public CommonContextMenu() { MenuItem delete = new MenuItem("Delete"); delete.Click += (sender, args) => { if (MainForm.SelectedDataNode != null) { MainForm.SelectedDataNode.Delete(); } }; MenuItem export = new MenuItem("Export"); export.Click += (sender, args) => { if (MainForm.SelectedDataNode != null) { MainForm.SelectedDataNode.Export(); } }; MenuItem import = new MenuItem("Replace"); import.Click += (sender, args) => { if (MainForm.SelectedDataNode != null) { MainForm.SelectedDataNode.Import(); } }; if (SupportedTypes != null) { foreach (var v in SupportedTypes) { if (PluginManager.HasEditor(v)) { MenuItem editor = new MenuItem("Open Editor"); editor.Click += (sender, args) => { if (MainForm.SelectedDataNode != null) { MainForm.Instance.OpenEditor(); } }; MenuItems.Add(editor); break; } } } MenuItem addRootReference = new MenuItem("Add Reference To Root"); addRootReference.Click += (sender, args) => { if (MainForm.SelectedDataNode != null) { var setting = new RootNameCreator(); using (var prop = new PropertyDialog("Symbol Name", setting)) if (prop.ShowDialog() == DialogResult.OK && !string.IsNullOrEmpty(setting.SymbolName)) { MainForm.AddRoot(setting.SymbolName, MainForm.SelectedDataNode.Accessor); } } }; MenuItems.Add(export); MenuItems.Add(import); MenuItems.Add(delete); MenuItems.Add("-"); MenuItems.Add(addRootReference); MenuItems.Add("-"); }
/// <summary> /// Event when Settings menu is clicked. /// </summary> /// <param name="sender">MenuItem</param> /// <param name="e">EventArgs</param> private void SettingsMenuClick(object sender, EventArgs e) { PropertyDialog dialog = new PropertyDialog(m_env.PluginManager.GetPropertySettings()); using (dialog) { if (dialog.ShowDialog() != DialogResult.OK) return; dialog.ApplyChanges(); } }
private void menuDataSets_Click(object sender, System.EventArgs e) { MDIChild mc = this.ActiveMdiChild as MDIChild; if (mc == null || mc.DrawCtl == null || mc.ReportDocument == null) return; MenuItem menu = sender as MenuItem; if (menu == null) return; mc.Editor.StartUndoGroup("DataSet Dialog"); string dsname = menu.Text; // Find the dataset we need List<XmlNode> ds = new List<XmlNode>(); DesignXmlDraw draw = mc.DrawCtl; XmlNode rNode = draw.GetReportNode(); XmlNode dsNode = draw.GetCreateNamedChildNode(rNode, "DataSets"); XmlNode dataset=null; // find the requested dataset: the menu text equals the name of the dataset int dsCount=0; // count of the datasets string onlyOneDsname=null; foreach (XmlNode dNode in dsNode) { if (dNode.Name != "DataSet") continue; XmlAttribute nAttr = dNode.Attributes["Name"]; if (nAttr == null) // shouldn't really happen continue; if (dsCount == 0) onlyOneDsname = nAttr.Value; // we keep track of 1st name; dsCount++; if (nAttr.Value == dsname) dataset = dNode; } bool bNew = false; if (dataset == null) // This must be the new menu item { dataset = draw.CreateElement(dsNode, "DataSet", null); // create empty node bNew = true; } ds.Add(dataset); using (PropertyDialog pd = new PropertyDialog(mc.DrawCtl, ds, PropertyTypeEnum.DataSets)) { DialogResult dr = pd.ShowDialog(); if (pd.Changed || dr == DialogResult.OK) { if (dsCount == 1) // if we used to just have one DataSet we may need to fix up DataRegions // that were defaulting to that name { dsCount = 0; bool bUseName = false; foreach (XmlNode dNode in dsNode) { if (dNode.Name != "DataSet") continue; XmlAttribute nAttr = dNode.Attributes["Name"]; if (nAttr == null) // shouldn't really happen continue; dsCount++; if (onlyOneDsname == nAttr.Value) bUseName = true; } if (bUseName && dsCount > 1) { foreach (XmlNode drNode in draw.ReportNames.ReportItems) { switch (drNode.Name) { // If a DataRegion doesn't have a dataset name specified use previous one case "Table": case "List": case "Matrix": case "Chart": XmlNode aNode = draw.GetNamedChildNode(drNode, "DataSetName"); if (aNode == null) draw.CreateElement(drNode, "DataSetName", onlyOneDsname); break; default: break; } } } } mc.Modified = true; } else if (bNew) // if canceled and new DataSet get rid of temp node { dsNode.RemoveChild(dataset); } if (pd.Delete) // user must have hit a delete button for this to get set dsNode.RemoveChild(dataset); if (!dsNode.HasChildNodes) // If no dataset exists we remove DataSets draw.RemoveElement(rNode, "DataSets"); mc.Editor.EndUndoGroup(pd.Changed || dr == DialogResult.OK); } }
/// <summary> /// /// </summary> /// <param name="filePath"></param> /// <param name="nodes"></param> public static void ExportToMayaAnim(string filePath, JointAnimManager animation, Dictionary <int, string> boneLabelMap) { using (PropertyDialog d = new PropertyDialog("Maya Settings", MayaSettings)) { if (d.ShowDialog() != DialogResult.OK) { return; } } MayaAnim a = new MayaAnim(); if (!MayaSettings.UseRadians) { a.header.angularUnit = "deg"; } int nodeIndex = 0; int frameCount = 0; foreach (var n in animation.Nodes) { MayaAnim.MayaNode mnode = new MayaAnim.MayaNode(); mnode.name = boneLabelMap.ContainsKey(nodeIndex) ? boneLabelMap[nodeIndex] : "JOBJ_" + nodeIndex; a.Nodes.Add(mnode); foreach (var t in n.Tracks) { if (!jointTrackToMayaTrack.ContainsKey(t.JointTrackType)) { continue; } MayaAnim.MayaTrack mtrack = new MayaAnim.MayaTrack(); mnode.atts.Add(mtrack); mtrack.type = jointTrackToMayaTrack[t.JointTrackType]; if (mtrack.IsAngular()) { mtrack.output = MayaAnim.OutputType.angular; } FOBJAnimState prevState = null; for (int i = 0; i < t.Keys.Count; i++) { // get maximum frame to use as framecount frameCount = (int)Math.Max(frameCount, t.Keys[i].Frame); // get current state at this key frame var state = t.GetState(t.Keys[i].Frame); bool nextSlope = i + 1 < t.Keys.Count && t.Keys[i + 1].InterpolationType == GXInterpolationType.HSD_A_OP_SLP; if (t.Keys[i].InterpolationType == GXInterpolationType.HSD_A_OP_SLP) { continue; } // assuming last frame // if last frame shift frame information over if (t.Keys[i].Frame == state.t1) { state.t0 = state.t1; state.p0 = state.p1; state.d0 = state.d1; //state.op_intrp = state.op; } // generate key with time and value var animkey = new MayaAnim.AnimKey() { input = state.t0, output = state.p0, }; // nothing to do for linear //if (op_intrp == GXInterpolationType.HSD_A_OP_LIN) // set step type for constant and key if (state.op_intrp == GXInterpolationType.HSD_A_OP_CON || state.op_intrp == GXInterpolationType.HSD_A_OP_KEY) { animkey.intan = "auto"; animkey.outtan = "step"; } // set tangents for weighted slopes if (state.op_intrp == GXInterpolationType.HSD_A_OP_SLP || state.op_intrp == GXInterpolationType.HSD_A_OP_SPL0 || state.op_intrp == GXInterpolationType.HSD_A_OP_SPL) { animkey.t1 = state.d0; animkey.t2 = state.d0; if (nextSlope && prevState != null) { animkey.t1 = prevState.d1; } animkey.intan = "spline"; animkey.outtan = "spline"; } prevState = state; animkey.t1 = (float)MathHelper.RadiansToDegrees(Math.Atan(animkey.t1)); animkey.t2 = (float)MathHelper.RadiansToDegrees(Math.Atan(animkey.t2)); if (mtrack.IsAngular() && !MayaSettings.UseRadians) { animkey.output = MathHelper.RadiansToDegrees(animkey.output); animkey.t1 = MathHelper.RadiansToDegrees(animkey.t1); animkey.t2 = MathHelper.RadiansToDegrees(animkey.t2); } // add final key mtrack.keys.Add(animkey); } } nodeIndex++; } // set framecount a.header.endTime = animation.FrameCount; a.header.startTime = 0; // save to file a.Save(filePath); }