예제 #1
0
파일: Preview.cs 프로젝트: fadoe/FPLedit
        public void Show(IInfo info)
        {
            HtmlExport exp  = new HtmlExport();
            string     path = info.GetTemp("kfpl.html");

            bool tryoutConsole = info.Settings.Get <bool>("kfpl.console");
            bool success       = exp.Exp(info.Timetable, path, info, tryoutConsole);

            if (success)
            {
                Process.Start(path);
            }
        }
예제 #2
0
        public TempLogger(IInfo info)
        {
            filename = info.GetTemp("fpledit_log.txt");

            var fi = new FileInfo(filename);

            if (fi.Exists && fi.Length > 10240) // > 10KB
            {
                fi.Delete();
            }

            Info("FPLedit Programmstart");
        }
예제 #3
0
파일: Plugin.cs 프로젝트: fadoe/FPLedit
        private void StartNetwork(int route)
        {
            var backupHandle = info.BackupTimetable();

            try
            {
                bool showMessage = info.Settings.Get("jTGStarter.show-message", true);

                if (showMessage)
                {
                    DialogResult res = MessageBox.Show("Dies speichert die aktuell ausgewählte Route in eine temporäre Datei und öffnet dann jTrainGraph (>= 2.02). Nachdem Sie die Arbeit in jTrainGraph beendet haben, speichern Sie damit die Datei und schließen das jTrainGraph-Hauptfenster, damit werden alle Änderungen an den Bildfahrplaneinstellungen übernommen."
                                                       + Environment.NewLine + "ACHTUNG: Es werden nur Änderungen an der Bildfahrplandarstellung übernommen, alle anderen Änderungen (z.B. Bahnhöfe oder Züge einfügen) werden verworfen! Aktion fortsetzen?"
                                                       + Environment.NewLine + Environment.NewLine + "Diese Meldung kann unter jTrainGraph > Einstellungen deaktiviert werden.",
                                                       "jTrainGraph starten (aktuelle Route)", MessageBoxButtons.YesNo, MessageBoxType.Warning);

                    if (res != DialogResult.Yes)
                    {
                        return;
                    }
                }

                var targetVersion = info.Settings.GetEnum("jTGStarter.target-version", JTGShared.DEFAULT_TT_VERSION);

                var exporter = new Shared.Filetypes.XMLExport();
                var importer = new Shared.Filetypes.XMLImport();
                var sync     = new TimetableRouteSync(info.Timetable, route);
                var rtt      = sync.GetRouteTimetable(targetVersion);
                var fn       = info.GetTemp(Guid.NewGuid().ToString() + "-route-" + route + ".fpl");
                exporter.Export(rtt, fn, info);

                StartJtg(fn, () =>
                {
                    info.StageUndoStep();
                    var crtt = importer.Import(fn, info, new SilentLogger(info.Logger));
                    sync.SyncBack(crtt);
                    info.SetUnsaved();
                });
                info.ClearBackup(backupHandle);
            }
            catch (Exception e)
            {
                info.Logger.Error("Beim Verwenden von jTrainGraph ist ein unerwarteter Fehler aufgetreten! " + e);
                info.Logger.LogException(e);
                info.RestoreTimetable(backupHandle);
            }
        }
예제 #4
0
        public void Report(CrashReport report)
        {
            var reportText = report.Serialize();

            try
            {
                var dir = info.GetTemp(REPORT_DIR);
                if (!Directory.Exists(dir))
                {
                    Directory.CreateDirectory(dir);
                }

                var fn_tt = info.GetTemp(REPORT_DIR + "crash_tt.fpl");
                if (info.Timetable != null)
                {
                    new Shared.Filetypes.XMLExport().Export(info.Timetable, fn_tt, info);
                }
                else if (File.Exists(fn_tt))
                {
                    File.Delete(fn_tt);
                }

                var fn_report = info.GetTemp(REPORT_DIR + "crash_report.xml");
                File.WriteAllText(fn_report, reportText);

                var fn_fileinfo = info.GetTemp(CRASH_DIR + "crash.file");
                File.WriteAllText(fn_fileinfo, info.FileState.FileName);

                var fn_crash = info.GetTemp(CRASH_DIR + "crash.flag");
                File.WriteAllText(fn_crash, "1");

                MessageBox.Show("Es ist ein unerwarteter Fehler in FPLedit aufgetreten." + Environment.NewLine + Environment.NewLine +
                                "FPLedit wird neu gestartet. Möglicherweise ist eine Wiederherstellung möglich.", MessageBoxType.Error);
            }
            catch
            {
                MessageBox.Show("Es ist ein unerwarteter Fehler in FPLedit aufgetreten. Es konnten keine weiteren Informationen gespeichert werden. FPLedit wird neu gestartet.");
            }
        }
예제 #5
0
        public void Init(IInfo info)
        {
            XMLEntity last = new XMLEntity("dummy");

            this.info = info;

            session  = Guid.NewGuid().ToString();
            basePath = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "ttDumps", session);
            dir      = new DirectoryInfo(basePath);

            if (!dir.Exists)
            {
                dir.Create();
            }

            // Log UI interaction
            FFormHandler.Init += (se, a) =>
            {
                var w = (Window)se;
                var n = w.GetType().FullName;
                w.Shown  += (s, e) => info.Logger.Debug("Form shown: " + n);
                w.Closed += (s, e) => info.Logger.Debug("Form closed: " + n);
            };

            var     logPath = Path.Combine(basePath, "session.log");
            dynamic l       = info.Logger;

            l.Loggers.Add(new FileLogger(logPath));

            // Log Timetable changes
            info.FileStateChanged += (s, e) =>
            {
                try
                {
                    if (info.Timetable == null || XDiff(last, info.Timetable.XMLEntity))
                    {
                        return;
                    }

                    var clone = info.Timetable.Clone();
                    var exp   = new XMLExport();

                    var fn = Path.Combine(basePath, $"fpldump-{sessionCounter++}.fpl");

                    var x = new XMLEntity("dump-info");
                    x.SetAttribute("session", session);
                    x.SetAttribute("date", DateTime.Now.ToShortDateString());
                    x.SetAttribute("time", DateTime.Now.ToShortTimeString());
                    x.SetAttribute("pf", Environment.OSVersion.Platform.ToString());

                    clone.Children.Add(x);
                    exp.Export(clone, fn, info);
                    info.Logger.Debug("Dump erstellt: " + fn);

                    var clone2 = info.Timetable.Clone();
                    last = clone2.XMLEntity;
                }
                catch { }
            };

            info.ExtensionsLoaded += (s, e) =>
            {
                info.Logger.Info("DebugDump aktiviert. Session: " + session);
                info.Logger.Debug("Enabled extensions: " + info.Settings.Get("extmgr.enabled", ""));
            };

            var tmpDir  = info.GetTemp("");
            var watcher = new FileSystemWatcher(tmpDir, "*.*")
            {
                NotifyFilter = NotifyFilters.LastWrite
            };

            watcher.Changed            += WatcherEvent;
            watcher.Created            += WatcherEvent;
            watcher.EnableRaisingEvents = true;
        }