示例#1
0
        public static void Main() {
            using (var fr = new FlowRuntime()) {
                fr.Message += Console.WriteLine;
                fr.UnhandledException += ex => MessageBox.Show(ex.ToString());

                var mainWindow = new MainWindow();
                var viewModel = new MainWindowVM();
                mainWindow.DataContext = viewModel;
                var mapper = new Mapper(viewModel);
                var metronom = new Metronom(new Play());
                var stopuhr = new Stopuhr();
                var pausenuhr = new Pausenuhr();
                var aufgabentimer = new Timer("aufgaben_timer");
                var pausentimer = new Timer("pausen_timer");
                var uebungsdauertimer = new Timer("uebungsdauer_timer");
                var repository = new Repository();

                var frc = new FlowRuntimeConfiguration();

                frc.AddStreamsFrom("metronom.logik.flows.root.flow", typeof(Metronom).Assembly);

                frc.AddAction<string>("aufgabe_laden", repository.Naechste_Aufgabe)
                    .AddAction<Metrum>("metrum_laden", repository.Naechstes_Metrum)
                    .AddAction("ende_der_aufgaben", repository.Ende_der_Aufgaben)
                    .AddAction<string>("aufgabe_anzeigen", mapper.Aufgabe_anzeigen)
                    .AddOperation(aufgabentimer)
                    .AddFunc<Metrum, int>("timer_konfigurieren", metronom.Timer_konfigurieren)
                    .AddAction("metronom_click", metronom.Click)
                    .AddFunc("uebungsdauer_timer_konfigurieren", stopuhr.Timer_konfigurieren)
                    .AddFunc("uebungsdauer_ermitteln", stopuhr.Uebungsdauer_ermitteln)
                    .AddOperation(uebungsdauertimer)
                    .AddAction<string>("uebungsdauer_anzeigen", mapper.Uebungsdauer_anzeigen)
                    .AddAction<string>("restdauer_anzeigen", mapper.Restdauer_anzeigen)
                    .AddAction("aufgabentimer_ausschalten", aufgabentimer.Stop)
                    .AddFunc("pausentimer_konfigurieren", pausenuhr.Pausentimer_konfigurieren)
                    .AddAction("pausentimer_ausschalten", pausentimer.Stop)
                    .AddFunc("restdauer_ermitteln", pausenuhr.Restdauer_ermitteln)
                    .AddOperation(pausentimer)
                    .AddAction<int>("restdauer_pruefen", pausenuhr.Restdauer_pruefen)
                    .AddAction("uebungsdauer_timer_ausschalten", uebungsdauertimer.Stop)
                    ;
                fr.Configure(frc);

                mainWindow.Start += fr.CreateEventProcessor(".start");
                mainWindow.Pause += fr.CreateEventProcessor(".pause");

                var app = new Application { MainWindow = mainWindow };
                app.Run(mainWindow);
            }
        }
示例#2
0
 public Mapper(MainWindowVM mainWindowVm) {
     this.mainWindowVm = mainWindowVm;
 }