private void LoadNewSGLFile(String stringFileName) { SGLEditorDocumentForm documentForm = new SGLEditorDocumentForm(); if (documentForm.OpenSGLFile(stringFileName) == false) { return; } documentForm.Text = "文档 " + stringFileName; documentForm.MdiParent = this; documentForm.SGLEditorForm = this; documentForm.Show(); this.Text = "DemoSoft - " + documentForm.Text; axCommandBars.EnableOffice2007FrameHandle(documentForm.Handle.ToInt32()); documentForm.WindowState = FormWindowState.Maximized; this.Refresh(); }
private void axCommandBars_Execute(object sender, _DCommandBarsEvents_ExecuteEvent eventArgs) { switch (eventArgs.control.Id) { case ResourceID.ID_SGL_ADD_PATH: SGLEditorDocumentForm sglAddPath = this.ActiveMdiChild as SGLEditorDocumentForm; if (sglAddPath == null) { return; } else { sglAddPath.AddPath(); } break; case ResourceID.ID_INSERT: SGLEditorDocumentForm sglInsertForm = this.ActiveMdiChild as SGLEditorDocumentForm; if (sglInsertForm == null) { return; } else { sglInsertForm.InsertImage(); } break; case ResourceID.ID_INSERT_MULTI: SGLEditorDocumentForm sglInsertMultiForm = this.ActiveMdiChild as SGLEditorDocumentForm; if (sglInsertMultiForm == null) { return; } else { MessageBox.Show("将自动检索文件的偏移信息\r\n中心位置 X 86 Y 49\r\n譬如:Offset[0086X0049].tga"); OpenFileDialog openInsertMultiFileDialog = new OpenFileDialog(); openInsertMultiFileDialog.DefaultExt = "tga"; openInsertMultiFileDialog.FilterIndex = 6; openInsertMultiFileDialog.Multiselect = true; openInsertMultiFileDialog.Filter = HelperMethods.CreateDialogFilter(true); if (openInsertMultiFileDialog.ShowDialog() == DialogResult.OK) { foreach (string strFileName in openInsertMultiFileDialog.FileNames) { sglInsertMultiForm.PageOpenImageControl.LoadImage(strFileName); sglInsertMultiForm.InsertImage(); } } } break; case ResourceID.ID_INSERT_MULTI_IMAGE: SGLEditorDocumentForm sglInsertMultiImageForm = this.ActiveMdiChild as SGLEditorDocumentForm; if (sglInsertMultiImageForm == null) { return; } else { MessageBox.Show("将自动检索文件的序号信息和帧号信息和偏移信息\r\n第 21 序号 第 0 帧(按数字从小到大自动排列) 中心位置 X 86 Y 49\r\n譬如:Image[0021]Frame[0000]Offset[0086X0049].tga"); OpenFileDialog openInsertMultiImageFileDialog = new OpenFileDialog(); openInsertMultiImageFileDialog.DefaultExt = "tga"; openInsertMultiImageFileDialog.FilterIndex = 6; openInsertMultiImageFileDialog.Multiselect = true; openInsertMultiImageFileDialog.Filter = HelperMethods.CreateDialogFilter(true); if (openInsertMultiImageFileDialog.ShowDialog() == DialogResult.OK) { Dictionary <int, List <int> > fileNameDictionary1 = new Dictionary <int, List <int> >(); Dictionary <int, Dictionary <int, string> > fileNameDictionary2 = new Dictionary <int, Dictionary <int, string> >(); foreach (string strFileName in openInsertMultiImageFileDialog.FileNames) { string strImageIndex = string.Empty; string strFrameIndex = string.Empty; int iIndex = strFileName.IndexOf("Image["); if (iIndex != -1) { iIndex += "Image[".Length; int iIndex2 = strFileName.IndexOf("]", iIndex); if (iIndex2 != -1) { strImageIndex = strFileName.Substring(iIndex, iIndex2 - iIndex); } else { continue; } } else { continue; } int iIndex3 = strFileName.IndexOf("Frame["); if (iIndex3 != -1) { iIndex3 += "Frame[".Length; int iIndex4 = strFileName.IndexOf("]", iIndex3); if (iIndex4 != -1) { strFrameIndex = strFileName.Substring(iIndex3, iIndex4 - iIndex3); } else { continue; } } else { continue; } int iImageIndex = int.Parse(strImageIndex); int iFrameIndex = int.Parse(strFrameIndex); List <int> list = null; fileNameDictionary1.TryGetValue(iImageIndex, out list); if (list == null) { list = new List <int>(); } list.Add(iFrameIndex); fileNameDictionary1[iImageIndex] = list; Dictionary <int, string> dictionary = null; fileNameDictionary2.TryGetValue(iImageIndex, out dictionary); if (dictionary == null) { dictionary = new Dictionary <int, string>(); } dictionary[iFrameIndex] = strFileName; fileNameDictionary2[iImageIndex] = dictionary; } foreach (KeyValuePair <int, List <int> > item in fileNameDictionary1) { if (item.Key >= sglInsertMultiImageForm.ListViewSGLImage.Items.Count) { continue; } if (item.Value == null) { continue; } if (item.Value.Count <= 0) { continue; } int[] iBubbleArrary = item.Value.ToArray(); if (iBubbleArrary.Length <= 0) { continue; } BubbleSorter bubbleSorter = new BubbleSorter(); bubbleSorter.Sort(iBubbleArrary); foreach (int itemInt in iBubbleArrary) { Dictionary <int, string> dictionary = null; fileNameDictionary2.TryGetValue(item.Key, out dictionary); if (dictionary == null) { continue; } string strFileName = string.Empty; dictionary.TryGetValue(itemInt, out strFileName); if (strFileName == string.Empty) { continue; } //MessageBox.Show( item.Key.ToString() + "-" + itemInt.ToString() + "-" + strFileName ); sglInsertMultiImageForm.ListViewSGLImage.SelectedIndices.Clear(); sglInsertMultiImageForm.ListViewSGLImage.SelectedIndices.Add(item.Key); sglInsertMultiImageForm.ListViewSGLImage.EnsureVisible(item.Key); sglInsertMultiImageForm.PageOpenImageControl.LoadImage(strFileName); sglInsertMultiImageForm.InsertImage(); } } } } break; case ResourceID.ID_REPLACE: SGLEditorDocumentForm sglReplaceForm = this.ActiveMdiChild as SGLEditorDocumentForm; if (sglReplaceForm == null) { return; } else { sglReplaceForm.ReplaceImage(); } break; case ResourceID.ID_DELETE: SGLEditorDocumentForm sglDeleteForm = this.ActiveMdiChild as SGLEditorDocumentForm; if (sglDeleteForm == null) { return; } else { sglDeleteForm.DeleteImage(); } break; case (int)XTPCommandBarsSpecialCommands.XTP_ID_RIBBONCUSTOMIZE: axCommandBars.ShowCustomizeDialog(3); break; case ResourceID.ID_APP_ABOUT: MessageBox.Show("Version " + System.Diagnostics.FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).FileMajorPart + "." + System.Diagnostics.FileVersionInfo.GetVersionInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).FileMinorPart + "\n注册qq:285372272 价格:600元"); break; case ResourceID.ID_PATCH_TOOL: #if !DEMO if (m_ByteFileBuffer.Length <= 0) { using (FileStream fileStream2 = File.Open(Directory.GetCurrentDirectory() + "/Demo.Mmose.Sgl.Patch.Bin", FileMode.Open, FileAccess.Read)) { m_ByteFileBuffer = new byte[fileStream2.Length]; fileStream2.Read(m_ByteFileBuffer, 0, m_ByteFileBuffer.Length); fileStream2.Close(); } } if (m_ByteFileBuffer.Length <= 0) { break; } SaveFileDialog m_SaveFileDialog = new SaveFileDialog(); m_SaveFileDialog.DefaultExt = "exe"; m_SaveFileDialog.Filter = "Path exe (*.exe)|*.exe"; m_SaveFileDialog.RestoreDirectory = true; if (m_SaveFileDialog.ShowDialog() == DialogResult.OK) { OpenFileDialog m_OpenFileDialog = new OpenFileDialog(); m_OpenFileDialog.DefaultExt = "Patch"; m_OpenFileDialog.Filter = "Path Data (*.Patch)|*.Patch"; m_OpenFileDialog.Multiselect = true; m_SaveFileDialog.RestoreDirectory = true; if (m_OpenFileDialog.ShowDialog() == DialogResult.OK) { if (m_OpenFileDialog.FileNames.Length <= 0) { break; } using (FileStream fileStream = File.Create(m_SaveFileDialog.FileName)) { if (m_ByteFileBuffer2.Length <= 0) { m_ByteFileBuffer2 = new byte[m_ByteFileBuffer.Length]; for (int iIndex = 0; iIndex < m_ByteFileBuffer.Length; iIndex++) { m_ByteFileBuffer2[iIndex] = m_ByteFileBuffer[(m_ByteFileBuffer.Length - iIndex) - 1]; } } fileStream.Write(m_ByteFileBuffer2, 0, m_ByteFileBuffer2.Length); byte[] byteUINT = new byte[sizeof(uint)]; // File Count byteUINT[0] = (byte)(m_OpenFileDialog.FileNames.Length & 0xFF); byteUINT[1] = (byte)((m_OpenFileDialog.FileNames.Length & 0xFF00) >> 8); byteUINT[2] = (byte)((m_OpenFileDialog.FileNames.Length & 0xFF0000) >> 16); byteUINT[3] = (byte)((m_OpenFileDialog.FileNames.Length & 0xFF000000) >> 24); fileStream.Write(byteUINT, 0, byteUINT.Length); foreach (string strFile in m_OpenFileDialog.FileNames) { byte[] byteFileBuffer3 = new byte[0]; using (FileStream fileStream3 = File.Open(strFile, FileMode.Open, FileAccess.Read)) { byteFileBuffer3 = new byte[fileStream3.Length]; fileStream3.Read(byteFileBuffer3, 0, byteFileBuffer3.Length); } fileStream.Write(byteFileBuffer3, 0, byteFileBuffer3.Length); } fileStream.Close(); } } } #else MessageBox.Show(SGLEditorDocumentForm.TryMessageInfo); #endif break; case ResourceID.ID_PATCH_FILE: OpenFileDialog m_SavePatchFileDialog = new OpenFileDialog(); m_SavePatchFileDialog.DefaultExt = "exe"; m_SavePatchFileDialog.Filter = "Change Path Exe (*.exe)|*.exe"; m_SavePatchFileDialog.RestoreDirectory = true; if (m_SavePatchFileDialog.ShowDialog() == DialogResult.OK) { byte[] bytePatchFileBuffer = new byte[0]; using (FileStream fileStream2 = File.Open(m_SavePatchFileDialog.FileName, FileMode.Open, FileAccess.Read)) { bytePatchFileBuffer = new byte[fileStream2.Length]; fileStream2.Read(bytePatchFileBuffer, 0, bytePatchFileBuffer.Length); } if (bytePatchFileBuffer.Length <= 0) { break; } using (FileStream fileStream = File.Create(Directory.GetCurrentDirectory() + "/Demo.Mmose.Sgl.Patch.Bin")) { byte[] byteFileBuffer2 = new byte[bytePatchFileBuffer.Length]; for (int iIndex = 0; iIndex < bytePatchFileBuffer.Length; iIndex++) { byteFileBuffer2[iIndex] = bytePatchFileBuffer[(bytePatchFileBuffer.Length - iIndex) - 1]; } fileStream.Write(byteFileBuffer2, 0, byteFileBuffer2.Length); fileStream.Close(); } } break; case ResourceID.ID_APP_EXIT: this.Close(); break; case (int)XTPCommandBarsSpecialCommands.XTP_ID_RIBBONCONTROLTAB: break; case ResourceID.ID_VIEW_STATUS_BAR: axCommandBars.StatusBar.Visible = !axCommandBars.StatusBar.Visible; axCommandBars.RecalcLayout(); break; case ResourceID.ID_VIEW_WORKSPACE: eventArgs.control.Checked = !eventArgs.control.Checked; axCommandBars.ShowTabWorkspace(eventArgs.control.Checked); break; case ResourceID.ID_FILE_CLOSE: this.ActiveMdiChild.Close(); break; case ResourceID.ID_FILE_OPEN: OpenFileDialog openFileDialog = new OpenFileDialog(); RegistryKey rkey = Registry.CurrentUser; RegistryKey rkey1 = rkey.OpenSubKey("Software", true); RegistryKey rkey2 = rkey1.CreateSubKey("DemoSoft"); RegistryKey rkey3 = rkey2.CreateSubKey("Demo G.O.S.E.SGL.Editor"); string strFullPath = (string)rkey2.GetValue("OpenFilePath", ""); rkey3.Close(); rkey2.Close(); rkey1.Close(); openFileDialog.InitialDirectory = strFullPath; openFileDialog.Filter = "SGL 文件 (*.sgl)|*.sgl|All files (*.*)|*.*"; openFileDialog.FilterIndex = 1; openFileDialog.RestoreDirectory = true; if (openFileDialog.ShowDialog(axCommandBars) == DialogResult.OK) { strFullPath = Path.GetFullPath(openFileDialog.FileName); rkey = Registry.CurrentUser; rkey1 = rkey.OpenSubKey("Software", true); rkey2 = rkey1.CreateSubKey("DemoSoft"); rkey3 = rkey2.CreateSubKey("Demo G.O.S.E.SGL.Editor"); rkey3.SetValue("OpenFilePath", strFullPath, RegistryValueKind.String); rkey3.Close(); rkey2.Close(); rkey1.Close(); if (openFileDialog.FileName.Length != 0) { LoadNewSGLFile(openFileDialog.FileName); } } break; default: break; } ; }
private void LoadNewSGLFile( String stringFileName ) { SGLEditorDocumentForm documentForm = new SGLEditorDocumentForm(); if ( documentForm.OpenSGLFile( stringFileName ) == false ) return; documentForm.Text = "文档 " + stringFileName; documentForm.MdiParent = this; documentForm.SGLEditorForm = this; documentForm.Show(); this.Text = "DemoSoft - " + documentForm.Text; axCommandBars.EnableOffice2007FrameHandle( documentForm.Handle.ToInt32() ); documentForm.WindowState = FormWindowState.Maximized; this.Refresh(); }