loupiottes/DMX-2.0/Main.cs
2013-12-30 19:59:51 +00:00

94 lines
No EOL
2.4 KiB
C#

using System;
using Gtk;
namespace DMX2
{
class MainClass
{
public static void Main (string[] args)
{
bool fullscreen = false, aguibtn = false;
WebServer ws = null; bool webserv = true;
// Traitement des options en ligne de commande :
foreach (string arg in args) {
switch (arg) {
case "fullscreen":
case "fs":
fullscreen = true;
break;
case "aguibtn":
aguibtn=true;
break;
case "nows":
webserv = false;
break;
default:
break;
}
}
if(webserv) ws = new WebServer();
// Initialisation GTK#
Application.Init ();
// Repertoire courrant est celui de l'executable
System.IO.Directory.SetCurrentDirectory (
(new System.IO.FileInfo (
System.Reflection.Assembly.GetExecutingAssembly ().Location
)).DirectoryName
);
// Chargement du style GTK
if (System.IO.File.Exists ("style.gtkrc"))
Gtk.Rc.Parse ("style.gtkrc");
else
using (System.IO.Stream stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("style.gtkrc"))
using (System.IO.TextReader reader = new System.IO.StreamReader(stream))
Gtk.Rc.ParseString (reader.ReadToEnd ());
// Force l'instanciation du handle midi.
IntPtr ptr = MidiEventProvider.MidiSeqHandle.Handle;
// Creation de la fenetre principale
MainWindow win = new MainWindow ();
// application des options
if(fullscreen) win.ToggleFullscreen();
if(aguibtn) win.AfficheBoutonACGUI();
// Gestion des erreurs non traitées dans l'interface
GLib.ExceptionManager.UnhandledException += HandleUnhandledException;
// Lancement
win.Show ();
Application.Run ();
// Nettoyage
if (Conduite.Courante != null) {
Conduite.Courante.Dispose ();
}
if(ws!=null) ws.Dispose();
}
static void HandleUnhandledException (GLib.UnhandledExceptionArgs args)
{
// En cas d'erreur non traitée : on affiche et on demande ...
var dlg = new Dialog ("Erreur !", null, DialogFlags.Modal);
dlg.AddButton ("Continuer ..." , ResponseType.Cancel ).GrabDefault();
dlg.AddButton ("Fermer l'application" , ResponseType.Close );
dlg.VBox.Add (new Label (args.ExceptionObject.ToString()));
dlg.VBox.ShowAll ();
// Si l'utilisateur a clique sur le bon bouton, on continue comme si de rien n'etait...
args.ExitApplication= (ResponseType)dlg.Run() == ResponseType.Close ;
dlg.Destroy();
}
}
}