| | 36 | == Show me some code! == |
| | 37 | This is the C# code that inits the Scheduling GUI. |
| | 38 | {{{ |
| | 39 | #!java |
| | 40 | #if DEBUG |
| | 41 | //To write to the console |
| | 42 | [DllImport("kernel32.dll")] |
| | 43 | static extern bool AttachConsole(int dwProcessId); |
| | 44 | private const int ATTACH_PARENT_PROCESS = -1; |
| | 45 | #endif |
| | 46 | /// <summary> |
| | 47 | /// Main Entry Point |
| | 48 | /// </summary> |
| | 49 | /// <param name="args">We accept the following Arguments: |
| | 50 | /// /s or -s = Server ip address or name |
| | 51 | /// /p or -p = port number (must be numeric) |
| | 52 | /// /a or -a = Access Code |
| | 53 | /// /v or -v = Verify Code |
| | 54 | /// /e or -e = Encoding (name of encoding as known to windows, such as windows-1256) |
| | 55 | /// /culture or -culture = Culture Name for UI Culture if you wish to override the Windows Culture |
| | 56 | /// </param> |
| | 57 | /// <remarks> |
| | 58 | /// Encoding decision is complex. This is the order of priority: |
| | 59 | /// - If the M DB runs in UTF-8, that's what we are going to use. |
| | 60 | /// - If that's not so, /e sets the default encoding. If /e is a non-existent encoding, move to next step. |
| | 61 | /// - If /e is not supplied or is not recognized, the default encoding is the Windows default Encoding for the user. |
| | 62 | /// </remarks> |
| | 63 | [STAThread()] |
| | 64 | static void Main(string[] args) |
| | 65 | { |
| | 66 | //Application wide error handler for unhandled errors (later I figure out that's only for WinForm ex'es) |
| | 67 | Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException); |
| | 68 | Application.ThreadException += new ThreadExceptionEventHandler(App_ThreadException); |
| | 69 | |
| | 70 | // Add the event handler for handling non-UI thread exceptions to the event. |
| | 71 | AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(App_DomainException); |
| | 72 | |
| | 73 | #if DEBUG |
| | 74 | // Print console messages to console if launched from console |
| | 75 | // Note: Imported From kernel32.dll |
| | 76 | AttachConsole(ATTACH_PARENT_PROCESS); |
| | 77 | #endif |
| | 78 | |
| | 79 | #if TRACE |
| | 80 | DateTime startLoadTime = DateTime.Now; |
| | 81 | #endif |
| | 82 | |
| | 83 | //Store a class instance of manager. Actual constructor does nothing. |
| | 84 | _current = new CGDocumentManager(); |
| | 85 | |
| | 86 | //Get command line options; store in private class wide variables |
| | 87 | var opset = new OptionSet() { |
| | 88 | { "s=", s => _current.m_Server = s }, |
| | 89 | { "p=", p => _current.m_Port = int.Parse(p) }, |
| | 90 | { "a=", a => _current.m_AccessCode = a }, |
| | 91 | { "v=", v => _current.m_VerifyCode = v }, |
| | 92 | { "e=", e => _current.m_Encoding = e}, |
| | 93 | { "culture=", culture => _current.m_CultureName = culture } |
| | 94 | }; |
| | 95 | |
| | 96 | opset.Parse(args); |
| | 97 | |
| | 98 | //Init app |
| | 99 | bool isEverythingOkay = _current.InitializeApp(); |
| | 100 | |
| | 101 | //if an error occurred, break out. |
| | 102 | if (!isEverythingOkay) return; |
| | 103 | |
| | 104 | //Create the first empty document |
| | 105 | //A document holds the resources, appointments, and availabilites |
| | 106 | //SAM: Good place for break point |
| | 107 | CGDocument doc = new CGDocument(); |
| | 108 | doc.DocManager = _current; |
| | 109 | |
| | 110 | //Create new View |
| | 111 | //A view is a specific arrangement of appointments and availabilites that constitute a document |
| | 112 | CGView view = new CGView(); |
| | 113 | view.InitializeDocView(doc, _current, doc.StartDate, _current.WindowText); |
| | 114 | |
| | 115 | //Handle BMX Event |
| | 116 | Application.DoEvents(); |
| | 117 | |
| | 118 | //test |
| | 119 | //doc.ThrowException(); |
| | 120 | //test |
| | 121 | |
| | 122 | #if TRACE |
| | 123 | DateTime EndLoadTime = DateTime.Now; |
| | 124 | TimeSpan LoadTime = EndLoadTime - startLoadTime; |
| | 125 | Debug.Write("Load Time for GUI is " + LoadTime.Seconds + " s & " + LoadTime.Milliseconds + " ms\n"); |
| | 126 | #endif |
| | 127 | |
| | 128 | view.Show(); |
| | 129 | view.Activate(); |
| | 130 | |
| | 131 | Application.Run(); |
| | 132 | } |
| | 133 | }}} |