Exemple #1
0
        /// <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;
        }
Exemple #2
0
 /// <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);
     }
 }
Exemple #3
0
        /// <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();
        }
Exemple #4
0
 /// <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);
     }
 }
Exemple #5
0
 /// <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.");
     }
 }
Exemple #6
0
 /// <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();
 }
Exemple #8
0
        ///<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;
            }
        }
Exemple #9
0
        /// <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);
            }
        }