3 * Copyright (c) 2007 - 2008, Blue Static <http://www.bluestatic.org>
5 * This program is free software; you can redistribute it and/or modify it under the terms of the GNU
6 * General Public License as published by the Free Software Foundation; either version 2 of the
7 * License, or (at your option) any later version.
9 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
10 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 * General Public License for more details.
13 * You should have received a copy of the GNU General Public License along with this program; if not,
14 * write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
17 #import "AppDelegate.h"
19 @implementation AppDelegate
21 @synthesize debugger
, breakpoint
;
28 if (self = [super init
])
35 * Initialize method that is called before all other messages. This will set the default
40 NSDictionary
*dict
= [[NSDictionary alloc
] initWithObjectsAndKeys
:[NSNumber numberWithInt
:9000], @
"Port", @
"macgdbp", @
"IDEKey", nil];
42 [[NSUserDefaults standardUserDefaults
] registerDefaults
:dict
];
48 * When the application has finished loading, show the connection dialog
50 - (void)applicationDidFinishLaunching
:(NSNotification
*)notif
52 debugger
= [[DebuggerWindowController alloc
] init
];
53 breakpoint
= [[BreakpointWindowController alloc
] init
];
54 [NSThread detachNewThreadSelector
:@selector(versionCheck
:) toTarget
:self withObject
:self];
58 * Shows the debugger window
60 - (IBAction
)showDebuggerWindow
:(id)sender
62 [[debugger window
] makeKeyAndOrderFront
:self];
66 * Shows the breakpoints window
68 - (IBAction
)showBreakpointWindow
:(id)sender
70 [[breakpoint window
] makeKeyAndOrderFront
:self];
74 * Shows the preferences window. Lazily loads the PreferencesController.
76 - (IBAction
)showPreferences
:(id)sender
79 prefs
= [[PreferencesController alloc
] init
];
81 [[prefs window
] makeKeyAndOrderFront
:self];
85 * Opens the URL to the help page
87 - (IBAction
)openHelpPage
:(id)sender
89 [[NSWorkspace sharedWorkspace
] openURL
:[NSURL URLWithString
:@
"http://www.bluestatic.org/software/macgdbp/help.php"]];
92 #pragma mark Version Checking
95 * Checks and sees if the current version is the most up-to-date one
97 - (void)versionCheck
:(id)sender
99 NSAutoreleasePool
*pool
= [[NSAutoreleasePool alloc
] init
];
101 NSMutableString
*version
= [NSMutableString stringWithString
:[[[NSBundle mainBundle
] infoDictionary
] valueForKey
:@
"CFBundleShortVersionString"]];
102 [version replaceOccurrencesOfString
:@
" " withString
:@
"-" options
:NSLiteralSearch range
:NSMakeRange(0, [version length
])];
104 NSURL
*url
= [NSURL URLWithString
:[NSString stringWithFormat
:@
"http://www.bluestatic.org/versioncheck.php?prod=macgdbp&ver=%@", version
]];
105 NSURLRequest
*request
= [NSURLRequest requestWithURL
:url cachePolicy
:NSURLRequestReloadIgnoringCacheData timeoutInterval
:10];
106 NSURLResponse
*response
;
107 NSData
*result
= [NSURLConnection sendSynchronousRequest
:request returningResponse
:&response error
:nil];
115 NSXMLDocument
*xml
= [[NSXMLDocument alloc
] initWithData
:result options
:0 error
:nil];
116 NSXMLNode
*comp
= [[xml rootElement
] childAtIndex
:0];
117 if ([[comp name
] isEqualToString
:@
"update"])
119 [updateString setStringValue
:[NSString stringWithFormat
:[updateString stringValue
], [comp stringValue
]]];
120 [updateWindow makeKeyAndOrderFront
:self];
121 [updateWindow center
];
131 * Opens the URL to the download page
133 - (IBAction
)openUpdateInformation
:(id)sender
135 [[NSWorkspace sharedWorkspace
] openURL
:[NSURL URLWithString
:@
"http://www.bluestatic.org/software/macgdbp/"]];