/// <summary> /// If the value is update in any way (level index changed, midway points loaded, etc.), update the widgets for the current midway point. /// <remarks>Keep in mind that the indeces are set in <see cref="iLevel"/> and <see cref="iMidway"/>.</remarks> /// </summary> private void UpdateMidway() { // I know this copies the midway point (it's a struct and not a class) but hey, it's more clear this way. Midway currentMidway = midways[iLevel, iMidway]; destinationIndex.Value = currentMidway.Destination; secondaryLevel.Checked = currentMidway.Secondary; waterLevel.Checked = currentMidway.Water; }
/// <summary> /// Calls an <see cref="OpenFileDialog"/> and exports the table as an ASM file. /// </summary> private void LoadAsmTable(string filename) { try { midways = Midway.ImportAsm(new FileStream(filename, FileMode.Open)); UpdateMidway(); } catch (ArgumentException ex) { MessageBox.Show("An error appeared when importing the ASM file: " + ex.Message, "Couldn't import the table", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
/// <summary> /// Removes any unnecessary midway points (see <see cref="Midway.CompressTable(ref Midway[,])"/> for more information) and sets the index to zero. /// </summary> private void CompressTable() { // Let's save some freespace! Midway.CompressTable(ref midways); // Set the midway point index to zero iMidway = 0; midwayNum.Value = 0; // Now update the GUI UpdateMidway(); }
/// <summary> /// Calls an <see cref="OpenFileDialog"/> and opens a .mmp file. /// </summary> private void LoadMmpFile(string filename) { try { midways = Midway.FromBinary(File.ReadAllBytes(filename)); UpdateMidway(); UnsavedChanges = false; } catch (ArgumentException ex) { MessageBox.Show("An error appeared when saving the midway point file: " + ex.Message); } }
/// <summary> /// Calls a <see cref="SaveFileDialog"/> and saves a .mmp file. /// </summary> private void SaveMmpFile(string filename) { try { File.WriteAllBytes(filename, Midway.ToBinary(midways)); UnsavedChanges = false; } catch (ArgumentException ex) { throw ex; } catch (IOException) { throw new IOException("The MMP file couldn't be written. Please check the permission."); } }
/// <summary> /// Calls a <see cref="SaveFileDialog"/> and exports the table as an ASM file. /// </summary> private void SaveAsmTable(string filename) { try { CompressTable(); Midway.ExportAsm(midways, new FileStream(filename, FileMode.Create)); UnsavedChanges = false; UpdateMidway(); } catch (ArgumentException ex) { MessageBox.Show("An error appeared when exporting the ASM file: " + ex.Message, "Couldn't export table", MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (IOException) { MessageBox.Show("The ASM file couldn't be exported. Please check the permission.", "Couldn't export table", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public EnvelopModel() { decoder = new Midway(); }
///<summary>Typically used when user clicks a button to a Program link. This method attempts to identify and execute the program based on the given programNum.</summary> public static void Execute(long programNum, Patient pat) { Program prog = Programs.GetFirstOrDefault(x => x.ProgramNum == programNum); if (prog == null) //no match was found { MessageBox.Show("Error, program entry not found in database."); return; } if (pat != null && PrefC.GetBool(PrefName.ShowFeaturePatientClone)) { pat = Patients.GetOriginalPatientForClone(pat); } if (prog.PluginDllName != "") { if (pat == null) { Plugins.LaunchToolbarButton(programNum, 0); } else { Plugins.LaunchToolbarButton(programNum, pat.PatNum); } return; } if (ODBuild.IsWeb() && prog.ProgName.In(Programs.GetListDisabledForWeb().Select(x => x.ToString()))) { MsgBox.Show("ProgramLinks", "Bridge is not available while viewing through the web."); return; //bridge is not available for web users at this time. } if (prog.ProgName == ProgramName.ActeonImagingSuite.ToString()) { ActeonImagingSuite.SendData(prog, pat); return; } if (prog.ProgName == ProgramName.Adstra.ToString()) { Adstra.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.Apixia.ToString()) { Apixia.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.Apteryx.ToString()) { Apteryx.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.AudaxCeph.ToString()) { AudaxCeph.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.BencoPracticeManagement.ToString()) { Benco.SendData(prog); return; } else if (prog.ProgName == ProgramName.BioPAK.ToString()) { BioPAK.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.CADI.ToString()) { CADI.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.Camsight.ToString()) { Camsight.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.CaptureLink.ToString()) { CaptureLink.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.Carestream.ToString()) { Carestream.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.Cerec.ToString()) { Cerec.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.CleaRay.ToString()) { CleaRay.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.CliniView.ToString()) { Cliniview.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.ClioSoft.ToString()) { ClioSoft.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.DBSWin.ToString()) { DBSWin.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.DemandForce.ToString()) { DemandForce.SendData(prog, pat); return; } #if !DISABLE_WINDOWS_BRIDGES else if (prog.ProgName == ProgramName.DentalEye.ToString()) { DentalEye.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.DentalStudio.ToString()) { DentalStudio.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.DentX.ToString()) { DentX.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.DrCeph.ToString()) { DrCeph.SendData(prog, pat); return; } #endif else if (prog.ProgName == ProgramName.DentalTekSmartOfficePhone.ToString()) { DentalTek.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.DentForms.ToString()) { DentForms.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.Dexis.ToString()) { Dexis.SendData(prog, pat); return; } #if !DISABLE_WINDOWS_BRIDGES else if (prog.ProgName == ProgramName.DexisIntegrator.ToString()) { DexisIntegrator.SendData(prog, pat); return; } #endif else if (prog.ProgName == ProgramName.Digora.ToString()) { Digora.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.Dimaxis.ToString()) { Planmeca.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.Office.ToString()) { Office.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.Dolphin.ToString()) { Dolphin.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.DXCPatientCreditScore.ToString()) { DentalXChange.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.Dxis.ToString()) { Dxis.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.EvaSoft.ToString()) { EvaSoft.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.EwooEZDent.ToString()) { Ewoo.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.FloridaProbe.ToString()) { FloridaProbe.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.Guru.ToString()) { Guru.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.HandyDentist.ToString()) { HandyDentist.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.HouseCalls.ToString()) { FormHouseCalls FormHC = new FormHouseCalls(); FormHC.ProgramCur = prog; FormHC.ShowDialog(); return; } else if (prog.ProgName == ProgramName.iCat.ToString()) { ICat.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.HdxWill.ToString()) { HdxWill.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.iDixel.ToString()) { iDixel.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.ImageFX.ToString()) { ImageFX.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.iRYS.ToString()) { Irys.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.Lightyear.ToString()) { Lightyear.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.NewTomNNT.ToString()) { NewTomNNT.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.MediaDent.ToString()) { MediaDent.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.Midway.ToString()) { Midway.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.MiPACS.ToString()) { MiPACS.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.OrthoCAD.ToString()) { OrthoCad.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.Oryx.ToString()) { Oryx.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.OrthoInsight3d.ToString()) { OrthoInsight3d.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.Owandy.ToString()) { Owandy.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.PandaPerio.ToString()) { PandaPerio.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.PandaPerioAdvanced.ToString()) { PandaPerioAdvanced.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.Patterson.ToString()) { Patterson.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.PDMP.ToString()) { string response = ""; if (PDMP.TrySendData(prog, pat, out response)) { FormWebBrowser formWebBrowser = new FormWebBrowser(response); formWebBrowser.Show(); } else { MessageBox.Show(response, "PDMP"); } return; } else if (prog.ProgName == ProgramName.PerioPal.ToString()) { PerioPal.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.PracticeByNumbers.ToString()) { PracticeByNumbers.ShowPage(); return; } else if (prog.ProgName == ProgramName.Progeny.ToString()) { Progeny.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.PT.ToString()) { PaperlessTechnology.SendData(prog, pat, false); return; } else if (prog.ProgName == ProgramName.PTupdate.ToString()) { PaperlessTechnology.SendData(prog, pat, true); return; } else if (prog.ProgName == ProgramName.RayMage.ToString()) { RayMage.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.Romexis.ToString()) { Romexis.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.Scanora.ToString()) { Scanora.SendData(prog, pat); return; } #if !DISABLE_WINDOWS_BRIDGES else if (prog.ProgName == ProgramName.Schick.ToString()) { Schick.SendData(prog, pat); return; } #endif else if (prog.ProgName == ProgramName.Sirona.ToString()) { Sirona.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.SMARTDent.ToString()) { SmartDent.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.Sopro.ToString()) { Sopro.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.TigerView.ToString()) { TigerView.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.Triana.ToString()) { Triana.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.TrojanExpressCollect.ToString()) { using (FormTrojanCollect FormT = new FormTrojanCollect(pat)) { FormT.ShowDialog(); } return; } else if (prog.ProgName == ProgramName.Trophy.ToString()) { Trophy.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.TrophyEnhanced.ToString()) { TrophyEnhanced.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.Tscan.ToString()) { Tscan.SendData(prog, pat); return; } #if !DISABLE_WINDOWS_BRIDGES else if (prog.ProgName == ProgramName.Vipersoft.ToString()) { Vipersoft.SendData(prog, pat); return; } #endif else if (prog.ProgName == ProgramName.visOra.ToString()) { Visora.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.VistaDent.ToString()) { VistaDent.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.VixWin.ToString()) { VixWin.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.VixWinBase36.ToString()) { VixWinBase36.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.VixWinBase41.ToString()) { VixWinBase41.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.VixWinNumbered.ToString()) { VixWinNumbered.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.VixWinOld.ToString()) { VixWinOld.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.XDR.ToString()) { XDR.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.XVWeb.ToString()) { XVWeb.SendData(prog, pat); return; } else if (prog.ProgName == ProgramName.ZImage.ToString()) { ZImage.SendData(prog, pat); return; } //all remaining programs: try{ string cmdline = prog.CommandLine; string path = Programs.GetProgramPath(prog); string outputFilePath = prog.FilePath; string fileTemplate = prog.FileTemplate; if (pat != null) { cmdline = ReplaceHelper(cmdline, pat); path = ReplaceHelper(path, pat); if (!String.IsNullOrEmpty(outputFilePath) && !String.IsNullOrEmpty(fileTemplate)) { fileTemplate = ReplaceHelper(fileTemplate, pat); fileTemplate = fileTemplate.Replace("\n", "\r\n"); ODFileUtils.WriteAllTextThenStart(outputFilePath, fileTemplate, path, cmdline); //Nothing else to do so return; return; } } //We made it this far and we haven't started the program yet so start it. ODFileUtils.ProcessStart(path, cmdline); } catch (Exception e) { MessageBox.Show(prog.ProgDesc + " is not available."); return; } }
/// <summary> /// Picks a ROM through a <see cref="SaveFileDialog"/> if not specified (or forced) and patch multi_midway.asm. /// </summary> private void PatchRom(bool saveAs = false) { try { // Similar as in ExportAsmTable(): Compress the tables first. CompressTable(); // Now we save the midway points with a fixed name. Midway.ExportAsm(midways, new FileStream(directory + MmpAsm, FileMode.Create)); UnsavedChanges = false; } catch { MessageBox.Show("Cannot create multi_midway_table.asm. Please check the file's permission or whether it's already in use.", "Cannot create " + MmpAsm, MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (Asar.init()) { Asar.reset(); if (string.IsNullOrEmpty(romName) || saveAs) { if (patchRomDialog.ShowDialog() != DialogResult.OK) { return; } romName = patchRomDialog.FileName; } try { // Remember that Asar expects headerless ROMs. // The code seperates the raw data from the header. byte[] fullRom = File.ReadAllBytes(patchRomDialog.FileName); int lHeader = fullRom.Length & 0x7fff; byte[] header = new byte[lHeader]; byte[] rom = new byte[fullRom.Length - lHeader]; Array.Copy(fullRom, 0, header, 0, lHeader); Array.Copy(fullRom, lHeader, rom, 0, fullRom.Length - lHeader); // Patching starts... if (Asar.patch(directory + "multi_midway.asm", ref rom)) { try { // Now it's time to merge them back. fullRom = new byte[rom.Length + lHeader]; Array.Copy(header, 0, fullRom, 0, lHeader); Array.Copy(rom, 0, fullRom, lHeader, rom.Length); File.WriteAllBytes(patchRomDialog.FileName, fullRom); } catch (IOException ex) { MessageBox.Show("An error appeared when patching Multiple Midway Points: " + ex.Message, "ROM couldn't be written", MessageBoxButtons.OK, MessageBoxIcon.Error); Asar.close(); return; } StringBuilder warningBuilder = new StringBuilder(); foreach (var warning in Asar.getwarnings()) { warningBuilder.AppendLine(warning.Fullerrdata); } string warnings = warningBuilder.ToString(); string fullWarning = !string.IsNullOrEmpty(warnings) ? "The following warnings appeared:\n" + warnings : ""; using (LongMessage message = new LongMessage("Multiple Midway Points has been inserted successfully. It uses " + Asar.getprints()[0] + " bytes of freespace.\n" + fullWarning, "Patching successful")) { message.ShowDialog(this); } } else { MessageBox.Show("An error appeared when patching Multiple Midway Points. See mmp.log for more information.", "ROM couldn't be patched", MessageBoxButtons.OK, MessageBoxIcon.Error); using (FileStream stream = new FileStream("mmp.log", FileMode.Create)) { using (StreamWriter writer = new StreamWriter(stream)) { foreach (var warning in Asar.getwarnings()) { writer.WriteLine(warning.Fullerrdata); } foreach (var error in Asar.geterrors()) { writer.WriteLine(error.Fullerrdata); } } } } } catch (IOException ex) { MessageBox.Show("An error appeared when patching Multiple Midway Points: " + ex.Message, "ROM couldn't be opened", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } finally { Asar.close(); } } else { MessageBox.Show("Asar couldn't be started. (Perhaps asar.dll is missing or a wrong version is used?)", "Couldn't open Asar", MessageBoxButtons.OK, MessageBoxIcon.Error); } }