Joe Wreschnig [Wed, 6 Mar 2013 12:23:09 +0000 (13:23 +0100)]
Mouse mode toggle creates really confusing situations right now, disable it.
Joe Wreschnig [Wed, 6 Mar 2013 11:41:25 +0000 (12:41 +0100)]
Improved analog support for scrolling, and allow speed adjustments.
Joe Wreschnig [Wed, 6 Mar 2013 10:44:33 +0000 (11:44 +0100)]
Change NJInputAnalog so magnitudes of subactions are always positive (e.g. -1 magnitude is 1 on low 0 on high, rather than -1 on low and high). Change NSInputs so buttons have a magnitude 1 when pressed, allowing them to also control the mouse. Allow mouse movement speed control.
Joe Wreschnig [Wed, 6 Mar 2013 00:48:52 +0000 (01:48 +0100)]
Add all major sections of help.
Joe Wreschnig [Wed, 6 Mar 2013 00:04:31 +0000 (01:04 +0100)]
Start help book. Tweak UI to deal with issues discovered trying to explain it.
Joe Wreschnig [Tue, 5 Mar 2013 01:08:03 +0000 (02:08 +0100)]
Subscribe the output controller to notifications directly. Application delegate has no more need to track the output controller.
Joe Wreschnig [Tue, 5 Mar 2013 00:56:13 +0000 (01:56 +0100)]
Avoid repeating serialization codes.
Joe Wreschnig [Tue, 5 Mar 2013 00:45:48 +0000 (01:45 +0100)]
Support sudden and automatic termination.
Joe Wreschnig [Mon, 4 Mar 2013 22:00:21 +0000 (23:00 +0100)]
Add some categories to better handle menus with represented objects, then use them for simpler menu handling.
Joe Wreschnig [Mon, 4 Mar 2013 22:00:02 +0000 (23:00 +0100)]
Tweak toolbar icons.
Joe Wreschnig [Mon, 4 Mar 2013 15:46:54 +0000 (16:46 +0100)]
Remove mappingsChanged with a notification. MappingsController no longer needs to know about the app delegate.
Joe Wreschnig [Mon, 4 Mar 2013 15:17:59 +0000 (16:17 +0100)]
Turn popover activation button 'on' when the popover is up.
Joe Wreschnig [Mon, 4 Mar 2013 15:01:38 +0000 (16:01 +0100)]
Give accurate names to most of the items in the nib. Tweak button appearance on the popover to resemble e.g. System Preferences lists with add/remove.
Joe Wreschnig [Mon, 4 Mar 2013 14:13:34 +0000 (15:13 +0100)]
Fix old method of unsetting field.
Joe Wreschnig [Mon, 4 Mar 2013 13:54:09 +0000 (14:54 +0100)]
Fix old check for unset field.
Joe Wreschnig [Mon, 4 Mar 2013 13:47:56 +0000 (14:47 +0100)]
Use represented objects rather than index hackery. Remove the mapping name from the output title, since it's always on-screen now.
Joe Wreschnig [Mon, 4 Mar 2013 13:43:51 +0000 (14:43 +0100)]
Fix mismatched serialization code.
Joe Wreschnig [Mon, 4 Mar 2013 13:06:53 +0000 (14:06 +0100)]
Signal mappings menu entry by a tag, not a check for a separator. Remove dead code.
Joe Wreschnig [Mon, 4 Mar 2013 12:52:00 +0000 (13:52 +0100)]
Rework toolbar UI. No more drawer, use a popover. No more weird toggle button, use a segmented control. Swap sides.
Joe Wreschnig [Sun, 3 Mar 2013 22:49:27 +0000 (23:49 +0100)]
Rename the application delegate, and hopefully catch the last vestiges of the old names.
Joe Wreschnig [Sun, 3 Mar 2013 21:37:54 +0000 (22:37 +0100)]
Big rename part 3: 'target' to 'output'.
Joe Wreschnig [Sun, 3 Mar 2013 21:08:41 +0000 (22:08 +0100)]
Big rename part 2: 'config' etc. to 'mapping.
Joe Wreschnig [Sun, 3 Mar 2013 20:42:59 +0000 (21:42 +0100)]
Big rename part 1: 'action' to 'input'.
Joe Wreschnig [Sun, 3 Mar 2013 19:56:04 +0000 (20:56 +0100)]
Publish activated/deactivated as notifications.
Joe Wreschnig [Sun, 3 Mar 2013 14:24:36 +0000 (15:24 +0100)]
Rewrite KeyInputTextView into NJKeyInputField. New class communicates using a proper delegate, standard property names, fixes more bugs in UI edge cases, allow Alt+Escape to clear the field, support modified virtual keys usefully.
Joe Wreschnig [Sun, 3 Mar 2013 12:57:46 +0000 (13:57 +0100)]
Implement equality checks for Targets. Don't consider equal targets as conflicting when importing.
Joe Wreschnig [Sat, 2 Mar 2013 20:53:01 +0000 (21:53 +0100)]
Post active mapping changes through notification center rather than to the application delegate directly. Don't listen for application switch notifications unless the mappings are active.
Joe Wreschnig [Sat, 2 Mar 2013 12:33:11 +0000 (13:33 +0100)]
Formal protocol for the interface shared between Joysticks and JSActions, use new safer types elsewhere.
Joe Wreschnig [Sat, 2 Mar 2013 11:24:57 +0000 (12:24 +0100)]
Harden importing.
Joe Wreschnig [Sat, 2 Mar 2013 02:51:36 +0000 (03:51 +0100)]
Nicer function to present the error.
Joe Wreschnig [Sat, 2 Mar 2013 02:38:58 +0000 (03:38 +0100)]
I had no idea you could use class property access like this it's the best thing ever.
Joe Wreschnig [Sat, 2 Mar 2013 02:07:13 +0000 (03:07 +0100)]
Use a sheet rather than a dialog for some parts of import/export.
Joe Wreschnig [Fri, 1 Mar 2013 19:28:14 +0000 (20:28 +0100)]
Remove unused field.
Joe Wreschnig [Fri, 1 Mar 2013 19:28:06 +0000 (20:28 +0100)]
Show HID error as a sheet so the main window still appears.
Joe Wreschnig [Fri, 1 Mar 2013 19:15:00 +0000 (20:15 +0100)]
Remove printf.
Joe Wreschnig [Fri, 1 Mar 2013 19:11:04 +0000 (20:11 +0100)]
Use ellipses, not ....
Joe Wreschnig [Fri, 1 Mar 2013 18:58:26 +0000 (19:58 +0100)]
Analog mouse scrolling.
Joe Wreschnig [Fri, 1 Mar 2013 18:48:29 +0000 (19:48 +0100)]
Remove 32 bit build.
Joe Wreschnig [Fri, 1 Mar 2013 17:52:38 +0000 (18:52 +0100)]
More compiler warnings on. Make all properties nonatomic.
Joe Wreschnig [Fri, 1 Mar 2013 17:41:58 +0000 (18:41 +0100)]
Simplify config removal since it's always the active config removed.
Joe Wreschnig [Fri, 1 Mar 2013 17:11:14 +0000 (18:11 +0100)]
Save after deleting a config. Reset target to no-op when deleting its config, rather than to the default config.
Joe Wreschnig [Fri, 1 Mar 2013 17:01:48 +0000 (18:01 +0100)]
Fix incorrect config list when there are duplicate names.
Joe Wreschnig [Fri, 1 Mar 2013 16:28:08 +0000 (17:28 +0100)]
Clean up some comments.
Joe Wreschnig [Fri, 1 Mar 2013 16:14:35 +0000 (17:14 +0100)]
Tweak some labels.
Joe Wreschnig [Fri, 1 Mar 2013 15:23:25 +0000 (16:23 +0100)]
Improve size in a number of pathological cases.
Joe Wreschnig [Fri, 1 Mar 2013 15:02:19 +0000 (16:02 +0100)]
Fix up copyright notices.
Joe Wreschnig [Fri, 1 Mar 2013 14:51:55 +0000 (15:51 +0100)]
Re-import exported files.
Joe Wreschnig [Fri, 1 Mar 2013 12:59:58 +0000 (13:59 +0100)]
Allow JSON export of configurations.
Joe Wreschnig [Fri, 1 Mar 2013 12:59:33 +0000 (13:59 +0100)]
Add key equivalents for switching configurations.
Joe Wreschnig [Fri, 1 Mar 2013 02:04:33 +0000 (03:04 +0100)]
Remove accidentally-committed file.
Joe Wreschnig [Fri, 1 Mar 2013 02:03:51 +0000 (03:03 +0100)]
Rename from Enjoy/Enjoy2 to 'Enjoyable'. While I'm mucking in the project file, enable a bunch of warnings and fixes for those warnings.
Joe Wreschnig [Fri, 1 Mar 2013 01:27:59 +0000 (02:27 +0100)]
Move logic into messages rather than directly in the callback functions.
Joe Wreschnig [Thu, 28 Feb 2013 23:38:59 +0000 (00:38 +0100)]
Allow clicking on the key field directly.
Joe Wreschnig [Thu, 28 Feb 2013 23:32:16 +0000 (00:32 +0100)]
Fix a variety of issues with incorrect / unexpected / unfriendly first responder status.
Joe Wreschnig [Thu, 28 Feb 2013 21:11:53 +0000 (22:11 +0100)]
Clean up a bunch of properties; remove unused ones, use automatic ones where possible, bypass them internally for serialization for speed.
Joe Wreschnig [Thu, 28 Feb 2013 20:42:23 +0000 (21:42 +0100)]
Better constructor for Config.
Joe Wreschnig [Thu, 28 Feb 2013 19:33:46 +0000 (20:33 +0100)]
Fix memory leak.
Joe Wreschnig [Thu, 28 Feb 2013 19:20:55 +0000 (20:20 +0100)]
Fix names while I still can.
Joe Wreschnig [Thu, 28 Feb 2013 19:07:42 +0000 (20:07 +0100)]
This isn't C++.
Joe Wreschnig [Thu, 28 Feb 2013 19:05:44 +0000 (20:05 +0100)]
This is not the dead zone that needs to be configurable.
Joe Wreschnig [Thu, 28 Feb 2013 19:03:47 +0000 (20:03 +0100)]
Fix analog axis scaling equation.
Joe Wreschnig [Thu, 28 Feb 2013 18:28:34 +0000 (19:28 +0100)]
Index hat switch names. Remove JSAction index properties entirely, once the name is generated they're not necessary.
Joe Wreschnig [Thu, 28 Feb 2013 18:25:33 +0000 (19:25 +0100)]
Fix inverted logic.
Joe Wreschnig [Thu, 28 Feb 2013 18:02:21 +0000 (19:02 +0100)]
Show an error message if opening input devices fail. Move real vs. configuration state onto JoystickController.
Joe Wreschnig [Thu, 28 Feb 2013 17:29:55 +0000 (18:29 +0100)]
Clean up save/restore. Write preferences immediately but continue relying on automatic/exit flush for disk persistence. Remember active configuration on exit.
Joe Wreschnig [Thu, 28 Feb 2013 16:28:29 +0000 (17:28 +0100)]
Fix case where quick axis movements could create duplicate running targets.
Joe Wreschnig [Thu, 28 Feb 2013 15:16:29 +0000 (16:16 +0100)]
Clean up TargetController formatting and public API.
Joe Wreschnig [Thu, 28 Feb 2013 14:49:40 +0000 (15:49 +0100)]
Reset target settings in UI when switching target types.
Joe Wreschnig [Thu, 28 Feb 2013 14:01:17 +0000 (15:01 +0100)]
Only refocus key input for empty/key targets.
Joe Wreschnig [Thu, 28 Feb 2013 13:44:41 +0000 (14:44 +0100)]
Replace hacky target stringification with structured serialization.
Joe Wreschnig [Thu, 28 Feb 2013 13:01:29 +0000 (14:01 +0100)]
Remove project headers from the prefix header; having everything in the prefix header file defeats the point of it.
Joe Wreschnig [Thu, 28 Feb 2013 12:46:41 +0000 (13:46 +0100)]
Use a weak reference for TargetConfig configurations to avoid a circular reference, and to auto-nil them when the chosen config is deleted.
Joe Wreschnig [Thu, 28 Feb 2013 01:06:53 +0000 (02:06 +0100)]
Clean up manual (previously 'neutral') vs. automatic (i.e. process-driven) configuration switching.
Joe Wreschnig [Thu, 28 Feb 2013 00:32:26 +0000 (01:32 +0100)]
Actually make it impossible to remove the default configuration. Various other small tweaks before I tackle target serialization.
Joe Wreschnig [Thu, 28 Feb 2013 00:08:58 +0000 (01:08 +0100)]
Rename 'stringify' to 'uid' where it pertains to unique action IDs.
Joe Wreschnig [Wed, 27 Feb 2013 23:34:12 +0000 (00:34 +0100)]
Indices are for display niceness only, so index them from 1 rather than keep offsetting them. Remove SubAction, it's just JSAction now.
Joe Wreschnig [Wed, 27 Feb 2013 22:56:02 +0000 (23:56 +0100)]
Remove hardcoded menu item offsets. Remove unused property.
Joe Wreschnig [Wed, 27 Feb 2013 22:54:38 +0000 (23:54 +0100)]
Fix crash when no action is available.
Joe Wreschnig [Wed, 27 Feb 2013 17:36:56 +0000 (18:36 +0100)]
JSAction base property should be eweak as it creates a circular reference with base.children.
Joe Wreschnig [Wed, 27 Feb 2013 17:28:05 +0000 (18:28 +0100)]
Automatically trigger/untrigger targets based on setting the 'running' property; set it directly from action activity state. Add action/target magnitudes, usually zero, except for analog sticks.
Joe Wreschnig [Wed, 27 Feb 2013 16:46:43 +0000 (17:46 +0100)]
Clean up JoystickController. Modernize more Objective-C syntax. Remove direct public expose of mouseLoc ivar and use a property. Replace CFRunLoopTimer with a NSTimer and unschedule the timer when nothing needs to run.
Joe Wreschnig [Wed, 27 Feb 2013 15:31:32 +0000 (16:31 +0100)]
Rename 'subActions' to 'children' to match Joystick property name. Simplify logic that deals with Joysticks-or-JSActions.
Joe Wreschnig [Wed, 27 Feb 2013 01:20:33 +0000 (02:20 +0100)]
Change KeyInputTextView from a TextView to a TextField. Simplifies the nib contents to remove surrounding NSScrollView. Refactor to simplify drawing and clean up properties.
Joe Wreschnig [Tue, 26 Feb 2013 23:31:03 +0000 (00:31 +0100)]
Refactor Actions. SubAction is a (mostly) proper JSAction. JSActions have (more) proper constructors.
Joe Wreschnig [Tue, 26 Feb 2013 21:55:00 +0000 (22:55 +0100)]
Clean-up of Joystick class. Refactor constructor to avoid mandatory 'post-constructor' in populateActions. Fix that the product ID was the vendor ID (this breaks existing configurations but I'm probably going to rename the program at this rate anyway). Standardize on spaces for whitespace rather than a mix of tabs and spaces.
Joe Wreschnig [Tue, 26 Feb 2013 21:05:34 +0000 (22:05 +0100)]
Switch controller/HID bridging to non-retained since the controller lives as long as the app delegate. Do not manually open and close HID devices; the HID manager does this and a manual close therefore causes a double-close and crash when a device is removed. Some reformatting, and make the joystick display name a virtual readonly attribute.
Joe Wreschnig [Tue, 26 Feb 2013 18:58:59 +0000 (19:58 +0100)]
Carbon.framework is no longer necessary.
Joe Wreschnig [Tue, 26 Feb 2013 18:57:43 +0000 (19:57 +0100)]
Switch from kEventAppFrontSwitched (Carbon) to NSWorkspaceDidActivateApplicationNotification (Cocoa) to detect application switching.
Joe Wreschnig [Tue, 26 Feb 2013 17:56:05 +0000 (18:56 +0100)]
Shrink and refit window contents.
Joe Wreschnig [Tue, 26 Feb 2013 17:32:35 +0000 (18:32 +0100)]
Remove useless items in menubar.
Joe Wreschnig [Tue, 26 Feb 2013 17:28:25 +0000 (18:28 +0100)]
Update to ARC (probably introducing some leaks, probably fixing others).
Joe Wreschnig [Tue, 26 Feb 2013 17:05:38 +0000 (18:05 +0100)]
'Convert to Modern Objective-C Syntax'...
Joe Wreschnig [Tue, 26 Feb 2013 17:03:42 +0000 (18:03 +0100)]
Update nib file to project SDK version.
Joe Wreschnig [Tue, 26 Feb 2013 17:02:27 +0000 (18:02 +0100)]
Update version and set build target to 10.6.
Joe Wreschnig [Tue, 26 Feb 2013 16:59:14 +0000 (17:59 +0100)]
Replace use of deprecated selectRow:byExtendingSelection:.
Joe Wreschnig [Tue, 26 Feb 2013 16:55:17 +0000 (17:55 +0100)]
Remove a branch that could never trigger (unsigned < 0) and some other logic errors leading to a potential access of array index '-1' when no row is selected.
Joe Wreschnig [Tue, 26 Feb 2013 16:45:38 +0000 (17:45 +0100)]
Type references to the application delegate to prevent warnings.
Joe Wreschnig [Tue, 26 Feb 2013 16:41:44 +0000 (17:41 +0100)]
Fix warning from unknown type by using a fast enumeration. Also, it's faster.
Joe Wreschnig [Tue, 26 Feb 2013 16:39:57 +0000 (17:39 +0100)]
Fix unsupported nib settings.
Joe Wreschnig [Tue, 26 Feb 2013 16:32:48 +0000 (17:32 +0100)]
Update project file to latest Xcode / OS X SDK.