From 5f3881c0f03e6d103bb09a4fb8da525b761b40dc Mon Sep 17 00:00:00 2001 From: rowanbeentje Date: Sat, 9 Mar 2013 23:22:03 +0000 Subject: Tweak and improve the User Manager: - Rework how data to populate the user manager is retrieved from the server, speeding up display of lots of users by a large factor - Fix support for schema permissions for the Anonymous user, and add support for '%' and '' hostnames (only showing if already set once), fixing Issue #1620 - Highlight databases in the user manager that have permissions set for the selected user - Switch to using the centrally provided database list to reduce queries and remove the information_schema and performance_schema "databases" - Speed up a number of operations by tweaking the logic and queries used --- Interfaces/English.lproj/UserManagerView.xib | 15370 ++++++++++++------------- Models/SPUserManager.xcdatamodel/elements | Bin 135130 -> 134896 bytes Models/SPUserManager.xcdatamodel/layout | Bin 9663 -> 9663 bytes Source/SPDatabaseDocument.m | 17 +- Source/SPUserMO.m | 8 +- Source/SPUserManager.h | 3 +- Source/SPUserManager.m | 137 +- Source/SPUserManagerDataSource.h | 37 + Source/SPUserManagerDataSource.m | 53 + Source/SPUserManagerDelegate.m | 54 +- sequel-pro.xcodeproj/project.pbxproj | 6 + 11 files changed, 7900 insertions(+), 7785 deletions(-) create mode 100644 Source/SPUserManagerDataSource.h create mode 100644 Source/SPUserManagerDataSource.m diff --git a/Interfaces/English.lproj/UserManagerView.xib b/Interfaces/English.lproj/UserManagerView.xib index efd667b7..f3e95dec 100644 --- a/Interfaces/English.lproj/UserManagerView.xib +++ b/Interfaces/English.lproj/UserManagerView.xib @@ -1,7717 +1,7663 @@ - - 1060 - 10K549 - 851 - 1038.36 - 461.00 - - com.apple.InterfaceBuilder.CocoaPlugin - 851 - - - YES - - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - - - YES - - YES - - - YES - - - - YES - - SPUserManager - - - FirstResponder - - - NSApplication - - - 1 - 2 - {{459, 282}, {815, 506}} - 1140851712 - User Managment - NSWindow - - {3.40282e+38, 3.40282e+38} - {752, 506} - - - 256 - - YES - - - 274 - - YES - - - 272 - - YES - - - 289 - - YES - - YES - Apple PDF pasteboard type - Apple PICT pasteboard type - Apple PNG pasteboard type - NSFilenamesPboardType - NeXT Encapsulated PostScript v1.2 pasteboard type - NeXT TIFF v4.0 pasteboard type - - - {{162, 1}, {15, 22}} - - YES - - 130560 - 33554432 - - NSImage - button_bar_handle - - 0 - 1 - 0 - NO - - YES - - - - 292 - {{-1, -1}, {32, 25}} - - YES - - 67239424 - 134217728 - - - LucidaGrande - 13 - 1044 - - - -2041822977 - 35 - - NSImage - button_add - - - - 400 - 75 - - - - - 292 - {{30, -1}, {32, 25}} - - YES - - 67239424 - 134217728 - - - - -2042347265 - 35 - - NSImage - button_remove - - - - 400 - 75 - - - - - 292 - {{61, -1}, {36, 25}} - - YES - - 71433792 - 134350848 - - LucidaGrande - 11 - 3100 - - - -2044051201 - 35 - - - 400 - 75 - - - YES - - - 1048576 - 2147483647 - 1 - - NSImage - button_action - - - NSImage - NSMenuCheckmark - - - NSImage - NSMenuMixedState - - _popUpItemAction: - - - YES - - OtherViews - - YES - - - - Add Host - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - Remove Host - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - YES - YES - - - 2147483647 - - - _popUpItemAction: - - - - - Refresh - - 2147483647 - - - _popUpItemAction: - - - - - - YES - 1 - YES - YES - - - - - 290 - - YES - - YES - Apple PDF pasteboard type - Apple PICT pasteboard type - Apple PNG pasteboard type - NSFilenamesPboardType - NeXT Encapsulated PostScript v1.2 pasteboard type - NeXT TIFF v4.0 pasteboard type - - - {{1, 1}, {176, 22}} - - YES - - 130560 - 33554432 - - NSImage - button_bar_spacer - - 0 - 1 - 0 - NO - - YES - - - - 274 - - YES - - - 2304 - - YES - - - 4352 - {177, 466} - - YES - - - 256 - {177, 17} - - - - - - -2147483392 - {{183, 0}, {12, 17}} - - - - YES - - NameColumn - 174 - 16 - 1000 - - 75628096 - 2048 - Accounts - - - 3 - MC4zMzMzMzI5ODU2AA - - - 6 - System - headerTextColor - - 3 - MAA - - - - - 337772096 - 2304 - Text Cell - - - - 6 - System - controlBackgroundColor - - 3 - MC42NjY2NjY2ODY1AA - - - - 6 - System - controlTextColor - - - - 3 - YES - YES - - - displayName - YES - compare: - - - - 3 - 0.0 - - 6 - System - _sourceListBackgroundColor - - 1 - MC44MzkyMTU2OTU5IDAuODY2NjY2Njc0NiAwLjg5ODAzOTIyMTgAA - - - - 6 - System - gridColor - - 3 - MC41AA - - - 20 - 1379926016 - - - 4 - 15 - 0 - YES - 1 - 1 - 14 - - - {{0, 17}, {177, 466}} - - - - - 4 - - - - -2147483392 - {{183, 17}, {11, 456}} - - 256 - - _doScroller: - 0.96487605571746826 - - - - -2147483392 - {{0, 473}, {183, 11}} - - 257 - - _doScroller: - 0.99487179517745972 - - - - 2304 - - YES - - - {177, 17} - - - - - 4 - - - - {{0, 23}, {177, 483}} - - - 560 - - - - - - QSAAAEEgAABBoAAAQaAAAA - - - {177, 506} - - NSView - - - - 274 - - YES - - - 274 - {{13, 40}, {611, 460}} - - - YES - - General - - - 256 - - YES - - - 47 - - YES - - - 274 - - YES - - - 268 - {{3, 46}, {134, 17}} - - YES - - 68288064 - 71304192 - Username: - - - - 6 - System - controlColor - - - - - - - - 268 - {{3, 16}, {134, 17}} - - YES - - 68288064 - 71304192 - Password: - - - - - - - - - 266 - {{142, 44}, {204, 22}} - - YES - - -1804468671 - 272630784 - - - - YES - - 6 - System - textBackgroundColor - - 3 - MQA - - - - 6 - System - textColor - - - - - - - 266 - {{142, 14}, {204, 22}} - - YES - - 343014976 - 272630784 - - - - YES - - - - YES - NSAllRomanInputSourcesLocaleIdentifier - - - - - {{1, 1}, {364, 76}} - - - - {{112, 175}, {366, 92}} - - {0, 0} - - 67239424 - 0 - Login Information - - - - 3 - MCAwLjgwMDAwMDAxMTkAA - - - - 1 - 0 - 2 - NO - - - {{10, 33}, {591, 414}} - - General - - - - - Global Privileges - - - 288 - - YES - - - 269 - - YES - - - 10 - - YES - - - 274 - - YES - - - 268 - {{16, 32}, {221, 18}} - - YES - - 67239424 - 0 - Replication Client - - - 1211912703 - 2 - - NSImage - NSSwitch - - - NSSwitch - - - - 200 - 25 - - - - - 268 - {{16, 12}, {221, 18}} - - YES - - 67239424 - 0 - Replication Slave - - - 1211912703 - 2 - - - - - 200 - 25 - - - - {{1, 1}, {253, 58}} - - - - {{17, 75}, {255, 74}} - - {0, 0} - - 67239424 - 0 - Replication - - - - 3 - MCAwLjgwMDAwMDAxMTkAA - - - - 1 - 0 - 2 - NO - - - - 10 - - YES - - - 274 - - YES - - - 268 - {{16, 192}, {124, 18}} - - YES - - 67239424 - 0 - Reload - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{16, 172}, {259, 18}} - - YES - - 67239424 - 0 - Shutdown - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{16, 152}, {259, 18}} - - YES - - 67239424 - 0 - File - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{16, 132}, {259, 18}} - - YES - - 67239424 - 0 - Process - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{16, 112}, {259, 18}} - - YES - - 67239424 - 0 - Super - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{16, 92}, {259, 18}} - - YES - - 67239424 - 0 - Create Temp Table - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{16, 72}, {259, 18}} - - YES - - 67239424 - 0 - Lock Tables - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{16, 52}, {259, 18}} - - YES - - 67239424 - 0 - Show Databases - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{16, 32}, {259, 18}} - - YES - - 67239424 - 0 - Create User - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{16, 12}, {259, 18}} - - YES - - 67239424 - 0 - Grant - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{144, 192}, {131, 18}} - - YES - - 67239424 - 0 - Event - - - 1211912703 - 2 - - - - - 200 - 25 - - - - {{1, 1}, {291, 218}} - - - - {{273, 15}, {293, 234}} - - {0, 0} - - 67239424 - 0 - Administration - - - - 3 - MCAwLjgwMDAwMDAxMTkAA - - - - 1 - 0 - 2 - NO - - - - 289 - {{65, 44}, {157, 32}} - - YES - - 67239424 - 134217728 - Check All - - - -2038284033 - 129 - - - 200 - 25 - - - - - 10 - - YES - - - 274 - - YES - - - 268 - {{16, 192}, {220, 18}} - - YES - - 67239424 - 0 - Select - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{16, 172}, {220, 18}} - - YES - - 67239424 - 0 - Insert - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{16, 152}, {220, 18}} - - YES - - 67239424 - 0 - Update - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{16, 132}, {220, 18}} - - YES - - 67239424 - 0 - Delete - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{16, 112}, {220, 18}} - - YES - - 67239424 - 0 - References - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{16, 92}, {220, 18}} - - YES - - 67239424 - 0 - Create - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{16, 72}, {220, 18}} - - YES - - 67239424 - 0 - Drop - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{16, 52}, {220, 18}} - - YES - - 67239424 - 0 - Alter - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{16, 32}, {220, 18}} - - YES - - 67239424 - 0 - Index - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{16, 12}, {220, 18}} - - YES - - 67239424 - 0 - Trigger - - - 1211912703 - 2 - - - - - 200 - 25 - - - - {{1, 1}, {252, 218}} - - - - {{17, 153}, {254, 234}} - - {0, 0} - - 67239424 - 0 - Database and Tables - - - - 3 - MCAwLjgwMDAwMDAxMTkAA - - - - 1 - 0 - 2 - NO - - - - 289 - {{66, 12}, {157, 32}} - - YES - - 67239424 - 134217728 - Uncheck All - - - -2038284033 - 129 - - - 200 - 25 - - - - - 10 - - YES - - - 274 - - YES - - - 268 - {{16, 92}, {259, 18}} - - YES - - 67239424 - 0 - Create View - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{16, 72}, {259, 18}} - - YES - - 67239424 - 0 - Show View - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{16, 52}, {259, 18}} - - YES - - 67239424 - 0 - Create Routine - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{16, 32}, {259, 18}} - - YES - - 67239424 - 0 - Alter Routine - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{16, 12}, {259, 18}} - - YES - - 67239424 - 0 - Execute - - - 1211912703 - 2 - - - - - 200 - 25 - - - - {{1, 1}, {291, 118}} - - - - {{273, 253}, {293, 134}} - - {0, 0} - - 67239424 - 0 - Views and Procedures - - - - 3 - MCAwLjgwMDAwMDAxMTkAA - - - - 1 - 0 - 2 - NO - - - {{8, 12}, {574, 399}} - - NSView - - - {{10, 33}, {591, 414}} - - Global Privileges - - - - - Schema Privileges - - - 256 - - YES - - - 268 - - YES - - - 2304 - - YES - - - 256 - {163, 363} - - YES - - - 256 - {163, 17} - - - - - - -2147483392 - {{110, 0}, {12, 17}} - - - - YES - - Schemas - 160 - 40 - 1000 - - 75628096 - 2048 - Schemas - - - 3 - MC4zMzMzMzI5ODU2AA - - - - - 337772096 - 133120 - Text Cell - - - - - - 1 - YES - - - - 3 - 2 - - - 14 - -700448768 - - - 4 - 15 - 0 - YES - 0 - - - {{1, 17}, {163, 363}} - - - - - 4 - - - - -2147483392 - {{110, 17}, {11, 352}} - - 256 - - _doScroller: - 37 - 0.1947367936372757 - - - - -2147483392 - {{1, 369}, {109, 11}} - - 257 - - _doScroller: - 0.57142859697341919 - - - - 2304 - - YES - - - {{1, 0}, {163, 17}} - - - - - 4 - - - - {{17, 17}, {165, 381}} - - - 562 - - - - - - QSAAAEEgAABBgAAAQYAAAA - - - - 268 - - YES - - - 2304 - - YES - - - 256 - {163, 363} - - YES - - - 256 - {163, 17} - - - - - - -2147483392 - {{110, 0}, {12, 17}} - - - - YES - - Granted Privilege - 160 - 40 - 1000 - - 75628096 - 2048 - Granted Privileges - - - 3 - MC4zMzMzMzI5ODU2AA - - - - - 337772096 - 133120 - Text Cell - - - - - - 1 - YES - - - - 3 - 2 - - - 14 - 1581252608 - - - 4 - 15 - 0 - YES - 0 - - - {{1, 17}, {163, 363}} - - - - - 4 - - - - -2147483392 - {{110, 17}, {11, 352}} - - 256 - - _doScroller: - 0.96969699859619141 - - - - -2147483392 - {{1, 369}, {109, 11}} - - 257 - - _doScroller: - 0.99236643314361572 - - - - 2304 - - YES - - - {{1, 0}, {163, 17}} - - - - - 4 - - - - {{190, 17}, {165, 381}} - - - 562 - - - - - - QSAAAEEgAABBgAAAQYAAAA - - - - 268 - - YES - - - 2304 - - YES - - - 256 - {163, 363} - - - - 256 - {163, 17} - - - - - - -2147483392 - {{110, 0}, {12, 17}} - - - - YES - - Available Privilige - 160 - 40 - 1000 - - 612499008 - 2048 - Available Privileges - - - 3 - MC4zMzMzMzI5ODU2AA - - - - - 874643008 - 133120 - Text Cell - - - - - - 1 - YES - - - - 3 - 2 - - - 14 - 1581252608 - - - 4 - 15 - 0 - YES - 0 - - - {{1, 17}, {163, 363}} - - - - - 4 - - - - -2147483392 - {{110, 17}, {11, 352}} - - 256 - - _doScroller: - 0.96969699859619141 - - - - -2147483392 - {{1, 369}, {109, 11}} - - 257 - - _doScroller: - 0.99280577898025513 - - - - 2304 - - YES - - - {{1, 0}, {163, 17}} - - - - - 4 - - - - {{409, 17}, {165, 381}} - - - 562 - - - - - - QSAAAEEgAABBgAAAQYAAAA - - - - 268 - {{363, 206}, {31, 32}} - - YES - - 604110336 - 134217728 - - - - -2030288641 - 34 - - NSImage - NSLeftFacingTriangleTemplate - - - - 400 - 75 - - - - - 268 - {{363, 177}, {31, 32}} - - YES - - 604110336 - 134217728 - - - - -2030288641 - 34 - - NSImage - NSRightFacingTriangleTemplate - - - - 400 - 75 - - - - {{10, 33}, {591, 414}} - - Schema Privileges - - - - - Resources - - - 256 - - YES - - - 303 - - YES - - - 274 - - YES - - - 268 - {{15, 84}, {164, 17}} - - YES - - 68288064 - 71304192 - Max Updates: - - - - - - - - - 268 - {{15, 49}, {164, 17}} - - YES - - 68288064 - 71304192 - Max Connections: - - - - - - - - - 268 - {{15, 17}, {164, 17}} - - YES - - 68288064 - 71304192 - Max Questions: - - - - - - - - - 268 - {{184, 81}, {149, 22}} - - YES - - -1804468671 - 272630784 - - - - YES - - YES - allowsFloats - alwaysShowsDecimalSeparator - formatterBehavior - generatesDecimalNumbers - lenient - minimum - negativeInfinitySymbol - nilSymbol - numberStyle - positiveInfinitySymbol - usesGroupingSeparator - - - YES - - - - - - - -∞ - - - +∞ - - - - #0.### - #0.### - - - - - - - - NaN - - YES - - - YES - - - - - - 0 - 0 - YES - NO - 1 - AAAAAAAAAAAAAAAAAAAAAA - - - 3 - YES - YES - YES - - . - , - NO - YES - NO - - - YES - - - - - - - 268 - {{184, 46}, {149, 22}} - - YES - - -1804468671 - 272630784 - - - - YES - - YES - allowsFloats - formatterBehavior - lenient - minimum - negativeInfinitySymbol - nilSymbol - numberStyle - positiveInfinitySymbol - usesGroupingSeparator - - - YES - - - - - -∞ - - - +∞ - - - - #0.### - #0.### - - - - - - - - NaN - - - - - - 3 - YES - YES - YES - - . - , - NO - YES - NO - - - YES - - - - - - - 268 - {{184, 14}, {149, 22}} - - YES - - -1804468671 - 272630784 - - - - YES - - YES - allowsFloats - formatterBehavior - lenient - minimum - negativeInfinitySymbol - nilSymbol - numberStyle - positiveInfinitySymbol - usesGroupingSeparator - - - YES - - - - - -∞ - - - +∞ - - - - #0.### - #0.### - - - - - - - - NaN - - - - - - 3 - YES - YES - YES - - . - , - NO - YES - NO - - - YES - - - - - - {{1, 1}, {351, 113}} - - - - {{119, 140}, {353, 129}} - - {0, 0} - - 67239424 - 0 - Resource Limits - - - - 3 - MCAwLjgwMDAwMDAxMTkAA - - - - 1 - 0 - 2 - NO - - - {{10, 33}, {591, 414}} - - - Resources - - - - - - - 0 - YES - - YES - - - - - - 289 - {{476, 12}, {147, 32}} - - YES - - -2080244224 - 134217728 - Apply - - - -2038021889 - 129 - - - DQ - 400 - 75 - - - - - 289 - {{329, 12}, {147, 32}} - - YES - - -2080244224 - 134217728 - Cancel - - - -2038021889 - 129 - - - Gw - 400 - 75 - - - - {{178, 0}, {637, 506}} - - NSView - - - {815, 506} - - YES - 2 - - - {815, 506} - - - {{0, 0}, {1680, 1028}} - {752, 528} - {3.40282e+38, 3.40282e+38} - - - - YES - username - children - host - itemTitle - password - globalPrivileges - globalPrivileges.Select_priv - globalPrivileges.Insert_priv - globalPrivileges.Update_priv - globalPrivileges.Delete_priv - globalPrivileges.Create_priv - globalPrivileges.Drop_priv - globalPrivileges.Reload_priv - globalPrivileges.Shutdown_priv - globalPrivileges.Process_priv - globalPrivileges.File_priv - globalPrivileges.Grant_priv - globalPrivileges.References_priv - globalPrivileges.Index_priv - globalPrivileges.Alter_priv - globalPrivileges.Show_db_priv - globalPrivileges.Super_priv - globalPrivileges.Create_tmp_table_priv - globalPrivileges.Lock_tables_priv - globalPrivileges.Execute_priv - globalPrivileges.Repl_slav_priv - globalPrivileges.Repl_client_priv - globalPrivileges.Create_view_priv - globalPrivileges.Show_view_priv - globalPrivileges.Create_routine_priv - globalPrivileges.Alter_routine_priv - globalPrivileges.Create_user_priv - globalPrivileges.Event_pri - user - content - contents - hosts.Select_priv - hosts.Insert_priv - displayName - create_priv - delete_priv - drop_priv - insert_priv - reload_priv - select_priv - update_priv - maxUserConnections - maxConnections - maxQuestions - max_user_connections - max_connections - max_questions - references_priv - alter_priv - index_priv - create_view_priv - show_view_priv - create_routine_priv - alter_routine_priv - execute_priv - shutdown_priv - file_priv - process_priv - super_priv - create_temporary_table_priv - lock_table_priv - lock_tables_priv - show_databases_priv - create_user_priv - grant_option_priv - replication_client_priv - replication_slave_priv - parent - create_temporary_tables_priv - select_priv.optional - insert_priv.optional - insert_priv.isOptional - select_priv.isOptional - trigger_priv - event_priv - name - max_updates - - SPUserItem - YES - YES - - SPUser - - - 3 - valueForKey: - - 1 - - - YES - - 10 - parent - - - - - 0 - - - - 4 - 0 - NO - 0 - - - - YES - YES - YES - YES - children - - - NSMutableDictionary - - - NSString - YES - YES - - YES - YES - YES - - - - YES - displayName - - YES - - YES - YES - YES - - - - YES - displayName - - YES - YES - - Privileges - - YES - YES - YES - - - - - YES - - - Remove User - - 2147483647 - - - - - - Remove Host - - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Refresh - - 2147483647 - - - - - - - 9 - 2 - {{157, 161}, {447, 300}} - 1954022400 - Errors Sheet - NSWindow - - {3.40282e+38, 3.40282e+38} - {447, 300} - - - 256 - - YES - - - 266 - {{17, 186}, {413, 94}} - - YES - - 67239424 - 272891904 - RXJyb3JzIG9jY3VycmVkIHdoZW4gYXBwbHlpbmcgeW91ciBjaGFuZ2VzIHRvIHRoZSBzZXJ2ZXIuCgpT + + 1060 + 11G63b + 851 + 1138.51 + 569.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 851 + + + YES + + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + YES + + + YES + + + + YES + + SPUserManager + + + FirstResponder + + + NSApplication + + + 1 + 2 + {{459, 282}, {815, 506}} + 1140851712 + User Managment + NSWindow + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {752, 506} + + + 256 + + YES + + + 274 + + YES + + + 272 + + YES + + + 289 + + YES + + YES + Apple PDF pasteboard type + Apple PICT pasteboard type + Apple PNG pasteboard type + NSFilenamesPboardType + NeXT Encapsulated PostScript v1.2 pasteboard type + NeXT TIFF v4.0 pasteboard type + + + {{162, 1}, {15, 22}} + + YES + + 130560 + 33554432 + + NSImage + button_bar_handle + + 0 + 1 + 0 + NO + + YES + + + + 292 + {{-1, -1}, {32, 25}} + + YES + + 67239424 + 134217728 + + + LucidaGrande + 13 + 1040 + + + -2041822977 + 35 + + NSImage + button_add + + + + 400 + 75 + + + + + 292 + {{30, -1}, {32, 25}} + + YES + + 67239424 + 134217728 + + + + -2042347265 + 35 + + NSImage + button_remove + + + + 400 + 75 + + + + + 292 + {{61, -1}, {36, 25}} + + YES + + 71433792 + 134350848 + + LucidaGrande + 11 + 3088 + + + -2044051201 + 35 + + + 400 + 75 + + + YES + + + 1048576 + 2147483647 + 1 + + NSImage + button_action + + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + Add Host + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Remove Host + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + YES + YES + + + 2147483647 + + + _popUpItemAction: + + + + + Refresh + + 2147483647 + + + _popUpItemAction: + + + + + + YES + 1 + YES + YES + + + + + 290 + + YES + + YES + Apple PDF pasteboard type + Apple PICT pasteboard type + Apple PNG pasteboard type + NSFilenamesPboardType + NeXT Encapsulated PostScript v1.2 pasteboard type + NeXT TIFF v4.0 pasteboard type + + + {{1, 1}, {176, 22}} + + YES + + 130560 + 33554432 + + NSImage + button_bar_spacer + + 0 + 1 + 0 + NO + + YES + + + + 274 + + YES + + + 2304 + + YES + + + 4352 + {177, 466} + + YES + + + 256 + {177, 17} + + + + + + -2147483392 + {{183, 0}, {12, 17}} + + + YES + + NameColumn + 174 + 16 + 1000 + + 75628096 + 2048 + Accounts + + + 3 + MC4zMzMzMzI5ODU2AA + + + 6 + System + headerTextColor + + 3 + MAA + + + + + 337772096 + 2304 + Text Cell + + + + 6 + System + controlBackgroundColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + + + 3 + YES + YES + + + displayName + YES + compare: + + + + 3 + 0.0 + + 6 + System + _sourceListBackgroundColor + + 6 + System + alternateSelectedControlColor + + 1 + MCAwIDEAA + + + + + 6 + System + gridColor + + 3 + MC41AA + + + 20 + 1379926016 + + + 4 + 15 + 0 + YES + 1 + 1 + 1 + 14 + + + {{0, 17}, {177, 466}} + + + + + 4 + + + + -2147483392 + {{183, 17}, {11, 456}} + + 256 + + _doScroller: + 0.96487605571746826 + + + + -2147483392 + {{0, 473}, {183, 11}} + + 257 + + _doScroller: + 0.99487179517745972 + + + + 2304 + + YES + + + {177, 17} + + + + + 4 + + + {{0, 23}, {177, 483}} + + + 133680 + + + + + QSAAAEEgAABBoAAAQaAAAA + + + {177, 506} + + NSView + + + + 274 + + YES + + + 274 + {{13, 40}, {611, 460}} + + + YES + + General + + + 256 + + YES + + + 47 + + YES + + + 274 + + YES + + + 268 + {{3, 46}, {134, 17}} + + YES + + 68288064 + 71304192 + Username: + + + + 6 + System + controlColor + + + + + + + + 268 + {{3, 16}, {134, 17}} + + YES + + 68288064 + 71304192 + Password: + + + + + + + + + 266 + {{142, 44}, {204, 22}} + + YES + + -1804468671 + 272630784 + + + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + + + + + + 266 + {{142, 14}, {204, 22}} + + YES + + 343014976 + 272630784 + + + + YES + + + + YES + NSAllRomanInputSourcesLocaleIdentifier + + + + + {{1, 1}, {364, 76}} + + + + {{112, 175}, {366, 92}} + + {0, 0} + + 67239424 + 0 + Login Information + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + + 1 + 0 + 2 + NO + + + {{10, 33}, {591, 414}} + + General + + + + + Global Privileges + + + 288 + + YES + + + 269 + + YES + + + 10 + + YES + + + 274 + + YES + + + 268 + {{16, 32}, {221, 18}} + + YES + + 67239424 + 0 + Replication Client + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 268 + {{16, 12}, {221, 18}} + + YES + + 67239424 + 0 + Replication Slave + + + 1211912703 + 2 + + + + + 200 + 25 + + + + {{1, 1}, {253, 58}} + + + + {{17, 75}, {255, 74}} + + {0, 0} + + 67239424 + 0 + Replication + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + + 1 + 0 + 2 + NO + + + + 10 + + YES + + + 274 + + YES + + + 268 + {{16, 192}, {124, 18}} + + YES + + 67239424 + 0 + Reload + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{16, 172}, {259, 18}} + + YES + + 67239424 + 0 + Shutdown + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{16, 152}, {259, 18}} + + YES + + 67239424 + 0 + File + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{16, 132}, {259, 18}} + + YES + + 67239424 + 0 + Process + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{16, 112}, {259, 18}} + + YES + + 67239424 + 0 + Super + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{16, 92}, {259, 18}} + + YES + + 67239424 + 0 + Create Temp Table + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{16, 72}, {259, 18}} + + YES + + 67239424 + 0 + Lock Tables + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{16, 52}, {259, 18}} + + YES + + 67239424 + 0 + Show Databases + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{16, 32}, {259, 18}} + + YES + + 67239424 + 0 + Create User + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{16, 12}, {259, 18}} + + YES + + 67239424 + 0 + Grant + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{144, 192}, {131, 18}} + + YES + + 67239424 + 0 + Event + + + 1211912703 + 2 + + + + + 200 + 25 + + + + {{1, 1}, {291, 218}} + + + + {{273, 15}, {293, 234}} + + {0, 0} + + 67239424 + 0 + Administration + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + + 1 + 0 + 2 + NO + + + + 289 + {{65, 44}, {157, 32}} + + YES + + 67239424 + 134217728 + Check All + + + -2038284033 + 129 + + + 200 + 25 + + + + + 10 + + YES + + + 274 + + YES + + + 268 + {{16, 192}, {220, 18}} + + YES + + 67239424 + 0 + Select + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{16, 172}, {220, 18}} + + YES + + 67239424 + 0 + Insert + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{16, 152}, {220, 18}} + + YES + + 67239424 + 0 + Update + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{16, 132}, {220, 18}} + + YES + + 67239424 + 0 + Delete + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{16, 112}, {220, 18}} + + YES + + 67239424 + 0 + References + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{16, 92}, {220, 18}} + + YES + + 67239424 + 0 + Create + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{16, 72}, {220, 18}} + + YES + + 67239424 + 0 + Drop + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{16, 52}, {220, 18}} + + YES + + 67239424 + 0 + Alter + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{16, 32}, {220, 18}} + + YES + + 67239424 + 0 + Index + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{16, 12}, {220, 18}} + + YES + + 67239424 + 0 + Trigger + + + 1211912703 + 2 + + + + + 200 + 25 + + + + {{1, 1}, {252, 218}} + + + + {{17, 153}, {254, 234}} + + {0, 0} + + 67239424 + 0 + Database and Tables + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + + 1 + 0 + 2 + NO + + + + 289 + {{66, 12}, {157, 32}} + + YES + + 67239424 + 134217728 + Uncheck All + + + -2038284033 + 129 + + + 200 + 25 + + + + + 10 + + YES + + + 274 + + YES + + + 268 + {{16, 92}, {259, 18}} + + YES + + 67239424 + 0 + Create View + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{16, 72}, {259, 18}} + + YES + + 67239424 + 0 + Show View + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{16, 52}, {259, 18}} + + YES + + 67239424 + 0 + Create Routine + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{16, 32}, {259, 18}} + + YES + + 67239424 + 0 + Alter Routine + + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{16, 12}, {259, 18}} + + YES + + 67239424 + 0 + Execute + + + 1211912703 + 2 + + + + + 200 + 25 + + + + {{1, 1}, {291, 118}} + + + + {{273, 253}, {293, 134}} + + {0, 0} + + 67239424 + 0 + Views and Procedures + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + + 1 + 0 + 2 + NO + + + {{8, 12}, {574, 399}} + + NSView + + + {{10, 33}, {591, 414}} + + Global Privileges + + + + + Schema Privileges + + + 256 + + YES + + + 268 + + YES + + + 2304 + + YES + + + 256 + {163, 363} + + YES + + + 256 + {163, 17} + + + + + + -2147483392 + {{110, 0}, {12, 17}} + + + YES + + Schemas + 160 + 40 + 1000 + + 75628096 + 2048 + Schemas + + + 3 + MC4zMzMzMzI5ODU2AA + + + + + 337772096 + 133120 + Text Cell + + + + + + 1 + YES + + + + 3 + 2 + + + 14 + -700448768 + + + 4 + 15 + 0 + YES + 0 + 1 + + + {{1, 17}, {163, 363}} + + + + + 4 + + + + -2147483392 + {{110, 17}, {11, 352}} + + 256 + + _doScroller: + 37 + 0.1947367936372757 + + + + -2147483392 + {{1, 369}, {109, 11}} + + 257 + + _doScroller: + 0.57142859697341919 + + + + 2304 + + YES + + + {{1, 0}, {163, 17}} + + + + + 4 + + + {{17, 17}, {165, 381}} + + + 133682 + + + + + QSAAAEEgAABBgAAAQYAAAA + + + + 268 + + YES + + + 2304 + + YES + + + 256 + {163, 363} + + YES + + + 256 + {163, 17} + + + + + + -2147483392 + {{110, 0}, {12, 17}} + + + YES + + Granted Privilege + 160 + 40 + 1000 + + 75628096 + 2048 + Granted Privileges + + + 3 + MC4zMzMzMzI5ODU2AA + + + + + 337772096 + 133120 + Text Cell + + + + + + 1 + YES + + + + 3 + 2 + + + 14 + 1581252608 + + + 4 + 15 + 0 + YES + 0 + 1 + + + {{1, 17}, {163, 363}} + + + + + 4 + + + + -2147483392 + {{110, 17}, {11, 352}} + + 256 + + _doScroller: + 0.96969699859619141 + + + + -2147483392 + {{1, 369}, {109, 11}} + + 257 + + _doScroller: + 0.99236643314361572 + + + + 2304 + + YES + + + {{1, 0}, {163, 17}} + + + + + 4 + + + {{190, 17}, {165, 381}} + + + 133682 + + + + + QSAAAEEgAABBgAAAQYAAAA + + + + 268 + + YES + + + 2304 + + YES + + + 256 + {163, 363} + + + + 256 + {163, 17} + + + + + + -2147483392 + {{110, 0}, {12, 17}} + + + YES + + Available Privilige + 160 + 40 + 1000 + + 612499008 + 2048 + Available Privileges + + + 3 + MC4zMzMzMzI5ODU2AA + + + + + 874643008 + 133120 + Text Cell + + + + + + 1 + YES + + + + 3 + 2 + + + 14 + 1581252608 + + + 4 + 15 + 0 + YES + 0 + 1 + + + {{1, 17}, {163, 363}} + + + + + 4 + + + + -2147483392 + {{110, 17}, {11, 352}} + + 256 + + _doScroller: + 0.96969699859619141 + + + + -2147483392 + {{1, 369}, {109, 11}} + + 257 + + _doScroller: + 0.99280577898025513 + + + + 2304 + + YES + + + {{1, 0}, {163, 17}} + + + + + 4 + + + {{409, 17}, {165, 381}} + + + 133682 + + + + + QSAAAEEgAABBgAAAQYAAAA + + + + 268 + {{363, 206}, {31, 32}} + + YES + + 604110336 + 134217728 + + + + -2030288641 + 34 + + NSImage + NSLeftFacingTriangleTemplate + + + + 400 + 75 + + + + + 268 + {{363, 177}, {31, 32}} + + YES + + 604110336 + 134217728 + + + + -2030288641 + 34 + + NSImage + NSRightFacingTriangleTemplate + + + + 400 + 75 + + + + {{10, 33}, {591, 414}} + + + Schema Privileges + + + + + Resources + + + 256 + + YES + + + 303 + + YES + + + 274 + + YES + + + 268 + {{15, 84}, {164, 17}} + + YES + + 68288064 + 71304192 + Max Updates: + + + + + + + + + 268 + {{15, 49}, {164, 17}} + + YES + + 68288064 + 71304192 + Max Connections: + + + + + + + + + 268 + {{15, 17}, {164, 17}} + + YES + + 68288064 + 71304192 + Max Questions: + + + + + + + + + 268 + {{184, 81}, {149, 22}} + + YES + + -1804468671 + 272630784 + + + + YES + + YES + allowsFloats + alwaysShowsDecimalSeparator + formatterBehavior + generatesDecimalNumbers + lenient + minimum + negativeInfinitySymbol + nilSymbol + numberStyle + positiveInfinitySymbol + usesGroupingSeparator + + + YES + + + + + + + -∞ + + + +∞ + + + + #0.### + #0.### + + + + + + + + NaN + + YES + + + YES + + + + + + 0 + 0 + YES + NO + 1 + AAAAAAAAAAAAAAAAAAAAAA + + + 3 + YES + YES + YES + + . + , + NO + YES + NO + + + YES + + + + + + + 268 + {{184, 46}, {149, 22}} + + YES + + -1804468671 + 272630784 + + + + YES + + YES + allowsFloats + formatterBehavior + lenient + minimum + negativeInfinitySymbol + nilSymbol + numberStyle + positiveInfinitySymbol + usesGroupingSeparator + + + YES + + + + + -∞ + + + +∞ + + + + #0.### + #0.### + + + + + + + + NaN + + + + + + 3 + YES + YES + YES + + . + , + NO + YES + NO + + + YES + + + + + + + 268 + {{184, 14}, {149, 22}} + + YES + + -1804468671 + 272630784 + + + + YES + + YES + allowsFloats + formatterBehavior + lenient + minimum + negativeInfinitySymbol + nilSymbol + numberStyle + positiveInfinitySymbol + usesGroupingSeparator + + + YES + + + + + -∞ + + + +∞ + + + + #0.### + #0.### + + + + + + + + NaN + + + + + + 3 + YES + YES + YES + + . + , + NO + YES + NO + + + YES + + + + + + {{1, 1}, {351, 113}} + + + + {{119, 140}, {353, 129}} + + {0, 0} + + 67239424 + 0 + Resource Limits + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + + 1 + 0 + 2 + NO + + + {{10, 33}, {591, 414}} + + Resources + + + + + + + 0 + YES + + YES + + + + + + 289 + {{476, 12}, {147, 32}} + + YES + + -2080244224 + 134217728 + Apply + + + -2038021889 + 129 + + + DQ + 400 + 75 + + + + + 289 + {{329, 12}, {147, 32}} + + YES + + -2080244224 + 134217728 + Cancel + + + -2038021889 + 129 + + + Gw + 400 + 75 + + + + {{178, 0}, {637, 506}} + + NSView + + + {815, 506} + + YES + 2 + + + {815, 506} + + + {{0, 0}, {1680, 1028}} + {752, 528} + {1.7976931348623157e+308, 1.7976931348623157e+308} + YES + + + + YES + username + children + host + itemTitle + password + globalPrivileges + globalPrivileges.Select_priv + globalPrivileges.Insert_priv + globalPrivileges.Update_priv + globalPrivileges.Delete_priv + globalPrivileges.Create_priv + globalPrivileges.Drop_priv + globalPrivileges.Reload_priv + globalPrivileges.Shutdown_priv + globalPrivileges.Process_priv + globalPrivileges.File_priv + globalPrivileges.Grant_priv + globalPrivileges.References_priv + globalPrivileges.Index_priv + globalPrivileges.Alter_priv + globalPrivileges.Show_db_priv + globalPrivileges.Super_priv + globalPrivileges.Create_tmp_table_priv + globalPrivileges.Lock_tables_priv + globalPrivileges.Execute_priv + globalPrivileges.Repl_slav_priv + globalPrivileges.Repl_client_priv + globalPrivileges.Create_view_priv + globalPrivileges.Show_view_priv + globalPrivileges.Create_routine_priv + globalPrivileges.Alter_routine_priv + globalPrivileges.Create_user_priv + globalPrivileges.Event_pri + user + content + contents + hosts.Select_priv + hosts.Insert_priv + displayName + create_priv + delete_priv + drop_priv + insert_priv + reload_priv + select_priv + update_priv + maxUserConnections + maxConnections + maxQuestions + max_user_connections + max_connections + max_questions + references_priv + alter_priv + index_priv + create_view_priv + show_view_priv + create_routine_priv + alter_routine_priv + execute_priv + shutdown_priv + file_priv + process_priv + super_priv + create_temporary_table_priv + lock_table_priv + lock_tables_priv + show_databases_priv + create_user_priv + grant_option_priv + replication_client_priv + replication_slave_priv + parent + create_temporary_tables_priv + select_priv.optional + insert_priv.optional + insert_priv.isOptional + select_priv.isOptional + trigger_priv + event_priv + name + max_updates + + SPUserItem + YES + YES + + SPUser + + + 3 + valueForKey: + + 1 + + + YES + + 10 + parent + + + + + 0 + + + + 4 + 0 + NO + 0 + + + + YES + YES + YES + YES + children + + + NSMutableDictionary + + + + YES + displayName + + YES + + YES + YES + YES + + + + YES + displayName + + YES + YES + + Privileges + + YES + YES + YES + + + + + YES + + + Remove User + + 2147483647 + + + + + + Remove Host + + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Refresh + + 2147483647 + + + + + + + 9 + 2 + {{157, 161}, {447, 300}} + 1954022400 + Errors Sheet + NSWindow + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + {447, 300} + + + 256 + + YES + + + 266 + {{17, 186}, {413, 94}} + + YES + + 67239424 + 272891904 + RXJyb3JzIG9jY3VycmVkIHdoZW4gYXBwbHlpbmcgeW91ciBjaGFuZ2VzIHRvIHRoZSBzZXJ2ZXIuCgpT b21lIGNoYW5nZXMgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIGFwcGxpZWQ7IHBsZWFzZSByZXZpZXcgdGhl IGVycm9ycyBiZWxvdyBiZWZvcmUgcHJvY2VlZGluZy4 - - LucidaGrande - 13 - 16 - - - - - - - - - 274 - - YES - - - 2304 - - YES - - - 2322 - {405, 14} - - - - - - - - - - - YES - - - 134 - - - - 405 - 1 - - - 2309 - 0 - - - - YES - - YES - NSBackgroundColor - NSColor - - - YES - - 6 - System - selectedTextBackgroundColor - - - - 6 - System - selectedTextColor - - - - - - - YES - - YES - NSColor - NSCursor - NSUnderline - - - YES - - 1 - MCAwIDEAA - - - {8, -8} - 13 - - - - - - - 6 - {463, 1e+07} - {223, 0} - - - - {{1, 1}, {405, 115}} - - - - - - {4, -5} - 1 - - 4 - - - - -2147483392 - {{424, 1}, {15, 257}} - - - _doScroller: - 1 - 0.85256409645080566 - - - - -2147483392 - {{-100, -100}, {87, 18}} - - 1 - - _doScroller: - 1 - 0.94565218687057495 - - - {{20, 61}, {407, 117}} - - - 562 - - - - - - - 289 - {{308, 13}, {125, 32}} - - YES - - 67239424 - 134217728 - OK - - - -2038284033 - 129 - - DQ - 200 - 25 - - - - {447, 300} - - {{0, 0}, {1440, 878}} - {447, 322} - {3.40282e+38, 3.40282e+38} - - - - - YES - - - treeController - - - - 101 - - - - outlineView - - - - 102 - - - - tabView - - - - 103 - - - - delegate - - - - 168 - - - - managedObjectContext: managedObjectContext - - - - - - managedObjectContext: managedObjectContext - managedObjectContext - managedObjectContext - 2 - - - 355 - - - - doApply: - - - - 399 - - - - doCancel: - - - - 400 - - - - value: selection.select_priv - - - - - - value: selection.select_priv - value - selection.select_priv - 2 - - - 514 - - - - value: selection.insert_priv - - - - - - value: selection.insert_priv - value - selection.insert_priv - 2 - - - 516 - - - - value: selection.update_priv - - - - - - value: selection.update_priv - value - selection.update_priv - 2 - - - 518 - - - - value: selection.delete_priv - - - - - - value: selection.delete_priv - value - selection.delete_priv - 2 - - - 519 - - - - value: selection.references_priv - - - - - - value: selection.references_priv - value - selection.references_priv - 2 - - - 520 - - - - value: selection.create_priv - - - - - - value: selection.create_priv - value - selection.create_priv - 2 - - - 521 - - - - value: selection.drop_priv - - - - - - value: selection.drop_priv - value - selection.drop_priv - 2 - - - 522 - - - - value: selection.alter_priv - - - - - - value: selection.alter_priv - value - selection.alter_priv - 2 - - - 523 - - - - value: selection.index_priv - - - - - - value: selection.index_priv - value - selection.index_priv - 2 - - - 524 - - - - value: selection.create_view_priv - - - - - - value: selection.create_view_priv - value - selection.create_view_priv - 2 - - - 525 - - - - value: selection.show_view_priv - - - - - - value: selection.show_view_priv - value - selection.show_view_priv - 2 - - - 526 - - - - value: selection.create_routine_priv - - - - - - value: selection.create_routine_priv - value - selection.create_routine_priv - 2 - - - 527 - - - - value: selection.alter_routine_priv - - - - - - value: selection.alter_routine_priv - value - selection.alter_routine_priv - 2 - - - 528 - - - - value: selection.execute_priv - - - - - - value: selection.execute_priv - value - selection.execute_priv - 2 - - - 529 - - - - value: selection.reload_priv - - - - - - value: selection.reload_priv - value - selection.reload_priv - 2 - - - 530 - - - - value: selection.shutdown_priv - - - - - - value: selection.shutdown_priv - value - selection.shutdown_priv - 2 - - - 531 - - - - value: selection.file_priv - - - - - - value: selection.file_priv - value - selection.file_priv - 2 - - - 532 - - - - value: selection.process_priv - - - - - - value: selection.process_priv - value - selection.process_priv - 2 - - - 533 - - - - value: selection.super_priv - - - - - - value: selection.super_priv - value - selection.super_priv - 2 - - - 534 - - - - value: selection.lock_tables_priv - - - - - - value: selection.lock_tables_priv - value - selection.lock_tables_priv - 2 - - - 537 - - - - value: selection.show_databases_priv - - - - - - value: selection.show_databases_priv - value - selection.show_databases_priv - 2 - - - 538 - - - - value: selection.create_user_priv - - - - - - value: selection.create_user_priv - value - selection.create_user_priv - 2 - - - 539 - - - - value: selection.grant_option_priv - - - - - - value: selection.grant_option_priv - value - selection.grant_option_priv - 2 - - - 540 - - - - value: selection.replication_client_priv - - - - - - value: selection.replication_client_priv - value - selection.replication_client_priv - 2 - - - 541 - - - - value: selection.replication_slave_priv - - - - - - value: selection.replication_slave_priv - value - selection.replication_slave_priv - 2 - - - 542 - - - - value: selection.create_temporary_tables_priv - - - - - - value: selection.create_temporary_tables_priv - value - selection.create_temporary_tables_priv - 2 - - - 606 - - - - privsSupportedByServer - - - - 649 - - - - enabled: select_priv - - - - - - enabled: select_priv - enabled - select_priv - - NSValueTransformerName - NSIsNotNil - - 2 - - - 653 - - - - enabled: insert_priv - - - - - - enabled: insert_priv - enabled - insert_priv - - NSValueTransformerName - NSIsNotNil - - 2 - - - 657 - - - - enabled: update_priv - - - - - - enabled: update_priv - enabled - update_priv - - NSValueTransformerName - NSIsNotNil - - 2 - - - 661 - - - - enabled: delete_priv - - - - - - enabled: delete_priv - enabled - delete_priv - - NSValueTransformerName - NSIsNotNil - - 2 - - - 665 - - - - enabled: references_priv - - - - - - enabled: references_priv - enabled - references_priv - - NSValueTransformerName - NSIsNotNil - - 2 - - - 669 - - - - enabled: create_priv - - - - - - enabled: create_priv - enabled - create_priv - - NSValueTransformerName - NSIsNotNil - - 2 - - - 673 - - - - enabled: drop_priv - - - - - - enabled: drop_priv - enabled - drop_priv - - NSValueTransformerName - NSIsNotNil - - 2 - - - 677 - - - - enabled: alter_priv - - - - - - enabled: alter_priv - enabled - alter_priv - - NSValueTransformerName - NSIsNotNil - - 2 - - - 679 - - - - enabled: index_priv - - - - - - enabled: index_priv - enabled - index_priv - - NSValueTransformerName - NSIsNotNil - - 2 - - - 683 - - - - enabled: reload_priv - - - - - - enabled: reload_priv - enabled - reload_priv - - NSValueTransformerName - NSIsNotNil - - 2 - - - 685 - - - - enabled: shutdown_priv - - - - - - enabled: shutdown_priv - enabled - shutdown_priv - - NSValueTransformerName - NSIsNotNil - - 2 - - - 687 - - - - enabled: file_priv - - - - - - enabled: file_priv - enabled - file_priv - - NSValueTransformerName - NSIsNotNil - - 2 - - - 689 - - - - enabled: process_priv - - - - - - enabled: process_priv - enabled - process_priv - - NSValueTransformerName - NSIsNotNil - - 2 - - - 691 - - - - enabled: super_priv - - - - - - enabled: super_priv - enabled - super_priv - - NSValueTransformerName - NSIsNotNil - - 2 - - - 693 - - - - enabled: lock_tables_priv - - - - - - enabled: lock_tables_priv - enabled - lock_tables_priv - - NSValueTransformerName - NSIsNotNil - - 2 - - - 697 - - - - enabled: show_databases_priv - - - - - - enabled: show_databases_priv - enabled - show_databases_priv - - NSValueTransformerName - NSIsNotNil - - 2 - - - 699 - - - - enabled: create_user_priv - - - - - - enabled: create_user_priv - enabled - create_user_priv - - NSValueTransformerName - NSIsNotNil - - 2 - - - 701 - - - - enabled: grant_option_priv - - - - - - enabled: grant_option_priv - enabled - grant_option_priv - - NSValueTransformerName - NSIsNotNil - - 2 - - - 703 - - - - enabled: create_view_priv - - - - - - enabled: create_view_priv - enabled - create_view_priv - - NSValueTransformerName - NSIsNotNil - - 2 - - - 705 - - - - enabled: show_view_priv - - - - - - enabled: show_view_priv - enabled - show_view_priv - - NSValueTransformerName - NSIsNotNil - - 2 - - - 707 - - - - enabled: create_routine_priv - - - - - - enabled: create_routine_priv - enabled - create_routine_priv - - NSValueTransformerName - NSIsNotNil - - 2 - - - 709 - - - - enabled: alter_routine_priv - - - - - - enabled: alter_routine_priv - enabled - alter_routine_priv - - NSValueTransformerName - NSIsNotNil - - 2 - - - 711 - - - - enabled: execute_priv - - - - - - enabled: execute_priv - enabled - execute_priv - - NSValueTransformerName - NSIsNotNil - - 2 - - - 713 - - - - enabled: replication_client_priv - - - - - - enabled: replication_client_priv - enabled - replication_client_priv - - NSValueTransformerName - NSIsNotNil - - 2 - - - 715 - - - - enabled: replication_slave_priv - - - - - - enabled: replication_slave_priv - enabled - replication_slave_priv - - NSValueTransformerName - NSIsNotNil - - 2 - - - 717 - - - - enabled: create_temporary_tables_priv - - - - - - enabled: create_temporary_tables_priv - enabled - create_temporary_tables_priv - - NSValueTransformerName - NSIsNotNil - - 2 - - - 718 - - - - value: selection.trigger_priv - - - - - - value: selection.trigger_priv - value - selection.trigger_priv - 2 - - - 723 - - - - enabled: trigger_priv - - - - - - enabled: trigger_priv - enabled - trigger_priv - - NSValueTransformerName - NSIsNotNil - - 2 - - - 724 - - - - enabled: event_priv - - - - - - enabled: event_priv - enabled - event_priv - - NSValueTransformerName - NSIsNotNil - - 2 - - - 729 - - - - value: selection.event_priv - - - - - - value: selection.event_priv - value - selection.event_priv - 2 - - - 730 - - - - checkAllPrivileges: - - - - 731 - - - - uncheckAllPrivileges: - - - - 732 - - - - window - - - - 733 - - - - delegate - - - - 734 - - - - delegate - - - - 735 - - - - value: selection.password - - - - - - value: selection.password - value - selection.password - - YES - - YES - NSConditionallySetsHidden - NSNoSelectionPlaceholder - NSNullPlaceholder - NSRaisesForNotApplicableKeys - NSValidatesImmediately - - - YES - - No Selection - Empty Password - - - - - 2 - - - 736 - - - - sortDescriptors: treeSortDescriptors - - - - - - sortDescriptors: treeSortDescriptors - sortDescriptors - treeSortDescriptors - 2 - - - 740 - - - - availableController - - - - 789 - - - - grantedController - - - - 790 - - - - schemaController - - - - 791 - - - - addSchemaPriv: - - - - 792 - - - - contentArray: schemas - - - - - - contentArray: schemas - contentArray - schemas - 2 - - - 809 - - - - dataSource - - - - 810 - - - - contentArray: availablePrivs - - - - - - contentArray: availablePrivs - contentArray - availablePrivs - 2 - - - 821 - - - - delegate - - - - 826 - - - - schemasTableView - - - - 827 - - - - dataSource - - - - 848 - - - - delegate - - - - 849 - - - - dataSource - - - - 850 - - - - delegate - - - - 851 - - - - grantedTableView - - - - 854 - - - - availableTableView - - - - 855 - - - - value: arrangedObjects.displayName - - - - - - value: arrangedObjects.displayName - value - arrangedObjects.displayName - - NSConditionallySetsEditable - - - 2 - - - 861 - - - - value: arrangedObjects.displayName - - - - - - value: arrangedObjects.displayName - value - arrangedObjects.displayName - - NSConditionallySetsEditable - - - 2 - - - 866 - - - - addSchemaPrivButton - - - - 883 - - - - value: arrangedObjects.displayName - - - - - - value: arrangedObjects.displayName - value - arrangedObjects.displayName - - YES - - YES - NSAllowsEditingMultipleValuesSelection - NSNullPlaceholder - NSValidatesImmediately - - - YES - - Anonymous - - - - 2 - - - 887 - - - - value: selection.displayName - - - - - - value: selection.displayName - value - selection.displayName - - YES - - YES - NSContinuouslyUpdatesValue - NSNoSelectionPlaceholder - NSNotApplicablePlaceholder - NSNullPlaceholder - NSRaisesForNotApplicableKeys - NSValidatesImmediately - - - YES - - No Selection - User Not Selected - Anonymous - - - - - 2 - - - 892 - - - - userNameTextField - - - - 893 - - - - menu - - - - 902 - - - - refresh: - - - - 903 - - - - removeUser: - - - - 905 - - - - removeHost: - - - - 907 - - - - enabled: selection.parent - - - - - - enabled: selection.parent - enabled - selection.parent - - NSValueTransformerName - NSIsNil - - 2 - - - 913 - - - - delegate - - - - 914 - - - - removeSchemaPriv: - - - - 921 - - - - removeSchemaPrivButton - - - - 922 - - - - delegate - - - - 924 - - - - contentArray: grantedSchemaPrivs - - - - - - contentArray: grantedSchemaPrivs - contentArray - grantedSchemaPrivs - - NSDeletesObjectsOnRemove - - - 2 - - - 929 - - - - value: selection.max_updates - - - - - - value: selection.max_updates - value - selection.max_updates - 2 - - - 975 - - - - value: selection.max_connections - - - - - - value: selection.max_connections - value - selection.max_connections - 2 - - - 977 - - - - value: selection.max_questions - - - - - - value: selection.max_questions - value - selection.max_questions - 2 - - - 979 - - - - maxUpdatesTextField - - - - 980 - - - - maxConnectionsTextField - - - - 981 - - - - maxQuestionsTextField - - - - 982 - - - - errorsSheet - - - - 993 - - - - errorsTextView - - - - 994 - - - - closeErrorsSheet: - - - - 998 - - - - value: arrangedObjects - - - - - - value: arrangedObjects - value - arrangedObjects - - NSConditionallySetsEditable - - - 2 - - - 999 - - - - splitView - - - - 1000 - - - - additionalDragHandleView - - - - 1005 - - - - addUser: - - - - 1021 - - - - enabled: selection.parent - - - - - - enabled: selection.parent - enabled - selection.parent - - NSValueTransformerName - NSIsNil - - 2 - - - 1024 - - - - removeUser: - - - - 1025 - - - - enabled: selection.parent - - - - - - enabled: selection.parent - enabled - selection.parent - - NSValueTransformerName - NSIsNil - - 2 - - - 1028 - - - - refresh: - - - - 1033 - - - - addHost: - - - - 1034 - - - - removeHost: - - - - 1035 - - - - - YES - - 0 - - - - - - -2 - - - File's Owner - - - -1 - - - First Responder - - - -3 - - - Application - - - 3 - - - YES - - - - UserManagerView - - - 4 - - - YES - - - - - - 25 - - - YES - - - - - - - 48 - - - - - 26 - - - YES - - - - - - - - - - - 28 - - - YES - - - - - - - - - 31 - - - YES - - - - - - 33 - - - YES - - - - - - 36 - - - - - 30 - - - - - 29 - - - - - 648 - - - SupportedPrivileges - - - 27 - - - YES - - - - - - - - 37 - - - YES - - - - - - - - - 38 - - - YES - - - - - - 41 - - - YES - - - - - - 44 - - - YES - - - - - - - - - 112 - - - YES - - - - - - 113 - - - - - 116 - - - YES - - - - - - 117 - - - - - 114 - - - YES - - - - - - 115 - - - - - 110 - - - YES - - - - - - 111 - - - - - 42 - - - YES - - - - - - 43 - - - YES - - - - - - 593 - - - YES - - - - - - - - - - - 189 - - - YES - - - - - - 190 - - - YES - - - - - - 592 - - - YES - - - - - - - - - - - 509 - - - YES - - - - - - 510 - - - - - 452 - - - YES - - - - - - - - - - 479 - - - YES - - - - - - 480 - - - - - 481 - - - YES - - - - - - 482 - - - - - 473 - - - YES - - - - - - 474 - - - - - 475 - - - YES - - - - - - 476 - - - - - 477 - - - YES - - - - - - 478 - - - - - 451 - - - YES - - - - - - - - - - - - - - - 719 - - - YES - - - - - - 720 - - - - - 455 - - - YES - - - - - - 456 - - - - - 457 - - - YES - - - - - - 458 - - - - - 459 - - - YES - - - - - - 460 - - - - - 461 - - - YES - - - - - - 462 - - - - - 463 - - - YES - - - - - - 464 - - - - - 465 - - - YES - - - - - - 466 - - - - - 467 - - - YES - - - - - - 468 - - - - - 469 - - - YES - - - - - - 470 - - - - - 471 - - - YES - - - - - - 472 - - - - - 453 - - - YES - - - - - - - - - - - - - - - - 725 - - - YES - - - - - - 726 - - - - - 487 - - - YES - - - - - - 488 - - - - - 489 - - - YES - - - - - - 490 - - - - - 491 - - - YES - - - - - - 492 - - - - - 493 - - - YES - - - - - - 494 - - - - - 495 - - - YES - - - - - - 496 - - - - - 497 - - - YES - - - - - - 498 - - - - - 499 - - - YES - - - - - - 500 - - - - - 501 - - - YES - - - - - - 502 - - - - - 503 - - - YES - - - - - - 504 - - - - - 505 - - - YES - - - - - - 506 - - - - - 454 - - - YES - - - - - - - 485 - - - YES - - - - - - 486 - - - - - 483 - - - YES - - - - - - 484 - - - - - 122 - - - YES - - - - - - 123 - - - - - 124 - - - YES - - - - - - 125 - - - - - 743 - - - YES - - - - - - 744 - - - YES - - - - - - - - - - 745 - - - YES - - - - - - - - - 746 - - - - - 747 - - - - - 748 - - - YES - - - - - - 749 - - - - - 750 - - - YES - - - - - - 753 - - - - - 768 - - - YES - - - - - - - - - 770 - - - YES - - - - - - 771 - - - - - 772 - - - - - 773 - - - YES - - - - - - 774 - - - - - 775 - - - YES - - - - - - - - - 776 - - - - - 777 - - - YES - - - - - - 778 - - - - - 779 - - - - - 780 - - - YES - - - - - - 781 - - - - - 782 - - - YES - - - - - - 783 - - - - - 786 - - - Schemas - - - 787 - - - GrantedPrivs - - - 788 - - - AvailablePrivs - - - 867 - - - - - 894 - - - YES - - - - - - - Context Menu - - - 896 - - - - - 899 - - - - - 900 - - - - - 901 - - - - - 918 - - - YES - - - - - - 919 - - - - - 923 - - - - - 953 - - - YES - - - - - - 954 - - - - - 955 - - - YES - - - - - - 956 - - - - - 957 - - - YES - - - - - - 958 - - - - - 965 - - - YES - - - - - - 966 - - - YES - - - - - - 967 - - - - - 968 - - - YES - - - - - - 969 - - - YES - - - - - - 970 - - - - - 971 - - - YES - - - - - - 972 - - - YES - - - - - - 973 - - - - - 983 - - - YES - - - - Errors Sheet - - - 984 - - - YES - - - - - - - - 985 - - - YES - - - - - - 986 - - - - - 987 - - - YES - - - - - - - - 988 - - - - - 989 - - - - - 990 - - - - - 995 - - - YES - - - - - - 996 - - - - - 511 - - - YES - - - - - - 512 - - - - - 1001 - - - YES - - - - - - 1002 - - - - - 1003 - - - YES - - - - - - 1004 - - - - - 1006 - - - YES - - - - - - 1007 - - - YES - - - - - - 1008 - - - YES - - - - - - 1009 - - - - - 1010 - - - - - 1011 - - - YES - - - - - - 1012 - - - YES - - - - - - - - - - 1019 - - - - - 1029 - - - - - 1030 - - - - - 1031 - - - - - 1032 - - - - - - - YES - - YES - -3.IBPluginDependency - 1001.IBPluginDependency - 1001.IBViewBoundsToFrameTransform - 1002.IBPluginDependency - 1003.IBPluginDependency - 1003.IBViewBoundsToFrameTransform - 1004.IBPluginDependency - 1006.IBPluginDependency - 1006.IBViewBoundsToFrameTransform - 1007.IBAttributePlaceholdersKey - 1007.IBPluginDependency - 1007.IBViewBoundsToFrameTransform - 1008.IBAttributePlaceholdersKey - 1008.IBPluginDependency - 1008.IBViewBoundsToFrameTransform - 1009.IBPluginDependency - 1010.IBPluginDependency - 1011.IBPluginDependency - 1012.IBEditorWindowLastContentRect - 1012.IBPluginDependency - 1019.IBPluginDependency - 1029.IBPluginDependency - 1030.IBPluginDependency - 1031.IBPluginDependency - 1032.IBPluginDependency - 110.IBPluginDependency - 111.IBPluginDependency - 112.IBPluginDependency - 113.IBPluginDependency - 114.IBPluginDependency - 115.IBPluginDependency - 116.IBPluginDependency - 117.IBPluginDependency - 122.IBPluginDependency - 123.IBPluginDependency - 124.IBPluginDependency - 125.IBPluginDependency - 189.IBPluginDependency - 190.IBPluginDependency - 25.CustomClassName - 25.IBPluginDependency - 26.IBPluginDependency - 27.IBPluginDependency - 28.IBPluginDependency - 29.IBPluginDependency - 3.IBEditorWindowLastContentRect - 3.IBPluginDependency - 3.IBWindowTemplateEditedContentRect - 3.NSWindowTemplate.visibleAtLaunch - 3.windowTemplate.hasMinSize - 3.windowTemplate.minSize - 30.IBPluginDependency - 31.CustomClassName - 31.IBPluginDependency - 33.IBPluginDependency - 36.IBPluginDependency - 37.IBAttributePlaceholdersKey - 37.IBPluginDependency - 38.IBPluginDependency - 4.IBPluginDependency - 41.IBPluginDependency - 42.IBPluginDependency - 43.IBPluginDependency - 44.IBPluginDependency - 451.IBPluginDependency - 451.IBViewBoundsToFrameTransform - 452.IBPluginDependency - 452.IBViewBoundsToFrameTransform - 453.IBPluginDependency - 453.IBViewBoundsToFrameTransform - 454.IBPluginDependency - 454.IBViewBoundsToFrameTransform - 455.IBPluginDependency - 456.IBPluginDependency - 457.IBPluginDependency - 458.IBPluginDependency - 459.IBPluginDependency - 460.IBPluginDependency - 461.IBPluginDependency - 462.IBPluginDependency - 463.IBPluginDependency - 464.IBPluginDependency - 465.IBPluginDependency - 465.IBViewBoundsToFrameTransform - 466.IBPluginDependency - 467.IBPluginDependency - 467.IBViewBoundsToFrameTransform - 468.IBPluginDependency - 469.IBPluginDependency - 469.IBViewBoundsToFrameTransform - 470.IBPluginDependency - 471.IBPluginDependency - 471.IBViewBoundsToFrameTransform - 472.IBPluginDependency - 473.IBPluginDependency - 474.IBPluginDependency - 475.IBPluginDependency - 476.IBPluginDependency - 477.IBPluginDependency - 478.IBPluginDependency - 479.IBPluginDependency - 48.IBPluginDependency - 480.IBPluginDependency - 481.IBPluginDependency - 482.IBPluginDependency - 483.IBPluginDependency - 484.IBPluginDependency - 485.IBPluginDependency - 486.IBPluginDependency - 487.IBPluginDependency - 488.IBPluginDependency - 489.IBPluginDependency - 490.IBPluginDependency - 491.IBPluginDependency - 492.IBPluginDependency - 493.IBPluginDependency - 494.IBPluginDependency - 495.IBPluginDependency - 496.IBPluginDependency - 497.IBPluginDependency - 498.IBPluginDependency - 499.IBPluginDependency - 500.IBPluginDependency - 501.IBPluginDependency - 502.IBPluginDependency - 503.IBPluginDependency - 504.IBPluginDependency - 505.IBPluginDependency - 506.IBPluginDependency - 509.IBPluginDependency - 509.IBViewBoundsToFrameTransform - 510.IBPluginDependency - 511.IBPluginDependency - 511.IBViewBoundsToFrameTransform - 512.IBPluginDependency - 592.IBPluginDependency - 593.IBPluginDependency - 719.IBPluginDependency - 719.IBViewBoundsToFrameTransform - 720.IBPluginDependency - 725.IBPluginDependency - 726.IBPluginDependency - 743.IBPluginDependency - 744.IBPluginDependency - 745.IBPluginDependency - 746.IBPluginDependency - 747.IBPluginDependency - 748.IBPluginDependency - 749.IBPluginDependency - 750.IBPluginDependency - 753.IBPluginDependency - 768.IBPluginDependency - 770.IBPluginDependency - 771.IBPluginDependency - 772.IBPluginDependency - 773.IBPluginDependency - 774.IBPluginDependency - 775.IBPluginDependency - 776.IBPluginDependency - 777.IBPluginDependency - 778.IBPluginDependency - 779.IBPluginDependency - 780.IBPluginDependency - 781.IBPluginDependency - 782.IBPluginDependency - 783.IBPluginDependency - 786.IBPluginDependency - 787.IBPluginDependency - 788.IBPluginDependency - 867.IBPluginDependency - 894.IBEditorWindowLastContentRect - 894.IBPluginDependency - 896.IBPluginDependency - 899.IBPluginDependency - 900.IBPluginDependency - 901.IBPluginDependency - 918.IBPluginDependency - 919.IBPluginDependency - 923.IBPluginDependency - 953.IBPluginDependency - 954.IBPluginDependency - 955.IBPluginDependency - 956.IBPluginDependency - 957.IBPluginDependency - 958.IBPluginDependency - 965.IBPluginDependency - 966.IBPluginDependency - 967.IBNumberFormatterBehaviorMetadataKey - 967.IBNumberFormatterLocalizesFormatMetadataKey - 967.IBPluginDependency - 968.IBPluginDependency - 969.IBPluginDependency - 970.IBNumberFormatterBehaviorMetadataKey - 970.IBNumberFormatterLocalizesFormatMetadataKey - 970.IBPluginDependency - 971.IBPluginDependency - 972.IBPluginDependency - 973.IBNumberFormatterBehaviorMetadataKey - 973.IBNumberFormatterLocalizesFormatMetadataKey - 973.IBPluginDependency - 983.IBEditorWindowLastContentRect - 983.IBPluginDependency - 983.IBWindowTemplateEditedContentRect - 983.NSWindowTemplate.visibleAtLaunch - 983.windowTemplate.hasMinSize - 983.windowTemplate.minSize - 984.IBPluginDependency - 985.IBPluginDependency - 986.IBPluginDependency - 987.IBPluginDependency - 988.IBPluginDependency - 989.IBPluginDependency - 990.IBPluginDependency - 995.IBPluginDependency - 996.IBPluginDependency - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - AQAAAABAIAAAA - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - AUL+AABAAAAAA - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - P4AAAL+AAABCdAAAwbgAAA - - - ToolTip - - ToolTip - - Remove User - - - com.apple.InterfaceBuilder.CocoaPlugin - - P4AAAL+AAABB8AAAwbgAAA - - - ToolTip - - ToolTip - - Add User - - - com.apple.InterfaceBuilder.CocoaPlugin - - P4AAAL+AAAC/gAAAwbgAAA - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{283, 286}, {130, 89}} - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - SPSplitView - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{233, 350}, {815, 506}} - com.apple.InterfaceBuilder.CocoaPlugin - {{233, 350}, {815, 506}} - - - {752, 506} - com.apple.InterfaceBuilder.CocoaPlugin - SPOutlineView - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - InitialTabViewItem - - InitialTabViewItem - - - - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - AUGIAABDEQAAA - - com.apple.InterfaceBuilder.CocoaPlugin - - AUOIgABDdQAAA - - com.apple.InterfaceBuilder.CocoaPlugin - - AUOIgABBEAAAA - - com.apple.InterfaceBuilder.CocoaPlugin - - AUGIAABChgAAA - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - P4AAAL+AAABBgAAAwtgAAA - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - P4AAAL+AAABDFQAAw28AAA - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - P4AAAL+AAABDFQAAw1sAAA - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - P4AAAL+AAABDFQAAw0cAAA - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - P4AAAL+AAABBYAAAwlQAAA - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - P4AAAL+AAABCpAAAwigAAA - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - P4AAAL+AAABDFQAAwzMAAA - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{841, 716}, {141, 73}} - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - com.apple.InterfaceBuilder.CocoaPlugin - {{431, 391}, {447, 300}} - com.apple.InterfaceBuilder.CocoaPlugin - {{431, 391}, {447, 300}} - - - {447, 300} - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - - YES - - - YES - - - - - YES - - - YES - - - - 1035 - - - - YES - - NSApplication - - IBProjectSource - Frameworks/PSMTabBar/PSMTabDragAssistant.h - - - - NSDictionary - - IBProjectSource - Source/NSDictionary_DeepMutableCopy.h - - - - NSMenu - - IBProjectSource - Source/SPMenuAdditions.h - - - - NSObject - - IBProjectSource - Frameworks/PSMTabBar/PSMTabBarCell.h - - - - NSObject - - IBProjectSource - Frameworks/PSMTabBar/PSMTabBarControl.h - - - - NSObject - - IBProjectSource - Frameworks/PSMTabBar/PSMTabBarController.h - - - - NSObject - - IBProjectSource - Source/SPContentFilterManager.h - - - - NSObject - - IBProjectSource - Source/SPImageView.h - - - - NSObject - - IBProjectSource - Source/SPMainThreadTrampoline.h - - - - NSObject - - IBProjectSource - Source/SPNotLoaded.h - - - - NSObject - - IBProjectSource - Source/SPObjectAdditions.h - - - - NSObject - - IBProjectSource - Source/SPQueryFavoriteManager.h - - - - NSTextView - - YES - - YES - doDecomposedStringWithCanonicalMapping: - doDecomposedStringWithCompatibilityMapping: - doPrecomposedStringWithCanonicalMapping: - doPrecomposedStringWithCompatibilityMapping: - doRemoveDiacritics: - doSelectionLowerCase: - doSelectionTitleCase: - doSelectionUpperCase: - doTranspose: - executeBundleItemForInputField: - insertNULLvalue: - moveSelectionLineDown: - moveSelectionLineUp: - selectCurrentLine: - selectCurrentWord: - selectEnclosingBrackets: - - - YES - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - - - - YES - - YES - doDecomposedStringWithCanonicalMapping: - doDecomposedStringWithCompatibilityMapping: - doPrecomposedStringWithCanonicalMapping: - doPrecomposedStringWithCompatibilityMapping: - doRemoveDiacritics: - doSelectionLowerCase: - doSelectionTitleCase: - doSelectionUpperCase: - doTranspose: - executeBundleItemForInputField: - insertNULLvalue: - moveSelectionLineDown: - moveSelectionLineUp: - selectCurrentLine: - selectCurrentWord: - selectEnclosingBrackets: - - - YES - - doDecomposedStringWithCanonicalMapping: - id - - - doDecomposedStringWithCompatibilityMapping: - id - - - doPrecomposedStringWithCanonicalMapping: - id - - - doPrecomposedStringWithCompatibilityMapping: - id - - - doRemoveDiacritics: - id - - - doSelectionLowerCase: - id - - - doSelectionTitleCase: - id - - - doSelectionUpperCase: - id - - - doTranspose: - id - - - executeBundleItemForInputField: - id - - - insertNULLvalue: - id - - - moveSelectionLineDown: - id - - - moveSelectionLineUp: - id - - - selectCurrentLine: - id - - - selectCurrentWord: - id - - - selectEnclosingBrackets: - id - - - - - IBProjectSource - Source/SPTextViewAdditions.h - - - - NSWindow - - IBProjectSource - Source/SPWindowAdditions.h - - - - SPOutlineView - NSOutlineView - - IBProjectSource - Source/SPOutlineView.h - - - - SPSplitView - NSSplitView - - toggleCollapse: - id - - - toggleCollapse: - - toggleCollapse: - id - - - - YES - - YES - additionalDragHandleView - collapseToggleButton - - - YES - NSView - NSButton - - - - YES - - YES - additionalDragHandleView - collapseToggleButton - - - YES - - additionalDragHandleView - NSView - - - collapseToggleButton - NSButton - - - - - IBProjectSource - Source/SPSplitView.h - - - - SPUserManager - NSWindowController - - YES - - YES - addHost: - addSchemaPriv: - addUser: - checkAllPrivileges: - closeErrorsSheet: - doApply: - doCancel: - doubleClickSchemaPriv: - refresh: - removeHost: - removeSchemaPriv: - removeUser: - uncheckAllPrivileges: - - - YES - id - id - id - id - id - id - id - id - id - id - id - id - id - - - - YES - - YES - addHost: - addSchemaPriv: - addUser: - checkAllPrivileges: - closeErrorsSheet: - doApply: - doCancel: - doubleClickSchemaPriv: - refresh: - removeHost: - removeSchemaPriv: - removeUser: - uncheckAllPrivileges: - - - YES - - addHost: - id - - - addSchemaPriv: - id - - - addUser: - id - - - checkAllPrivileges: - id - - - closeErrorsSheet: - id - - - doApply: - id - - - doCancel: - id - - - doubleClickSchemaPriv: - id - - - refresh: - id - - - removeHost: - id - - - removeSchemaPriv: - id - - - removeUser: - id - - - uncheckAllPrivileges: - id - - - - - YES - - YES - addSchemaPrivButton - availableController - availableTableView - errorsSheet - errorsTextView - grantedController - grantedTableView - maxConnectionsTextField - maxQuestionsTextField - maxUpdatesTextField - outlineView - privsSupportedByServer - removeSchemaPrivButton - schemaController - schemasTableView - splitView - tabView - treeController - userNameTextField - - - YES - NSButton - NSArrayController - NSTableView - NSWindow - NSTextView - NSArrayController - NSTableView - NSTextField - NSTextField - NSTextField - NSOutlineView - NSMutableDictionary - NSButton - NSArrayController - NSTableView - SPSplitView - NSTabView - NSTreeController - NSTextField - - - - YES - - YES - addSchemaPrivButton - availableController - availableTableView - errorsSheet - errorsTextView - grantedController - grantedTableView - maxConnectionsTextField - maxQuestionsTextField - maxUpdatesTextField - outlineView - privsSupportedByServer - removeSchemaPrivButton - schemaController - schemasTableView - splitView - tabView - treeController - userNameTextField - - - YES - - addSchemaPrivButton - NSButton - - - availableController - NSArrayController - - - availableTableView - NSTableView - - - errorsSheet - NSWindow - - - errorsTextView - NSTextView - - - grantedController - NSArrayController - - - grantedTableView - NSTableView - - - maxConnectionsTextField - NSTextField - - - maxQuestionsTextField - NSTextField - - - maxUpdatesTextField - NSTextField - - - outlineView - NSOutlineView - - - privsSupportedByServer - NSMutableDictionary - - - removeSchemaPrivButton - NSButton - - - schemaController - NSArrayController - - - schemasTableView - NSTableView - - - splitView - SPSplitView - - - tabView - NSTabView - - - treeController - NSTreeController - - - userNameTextField - NSTextField - - - - - IBProjectSource - Source/SPUserManager.h - - - - SPUserManager - - IBProjectSource - Source/SPUserManagerDelegate.h - - - - - YES - - NSActionCell - NSCell - - IBFrameworkSource - AppKit.framework/Headers/NSActionCell.h - - - - NSApplication - NSResponder - - IBFrameworkSource - AppKit.framework/Headers/NSApplication.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSApplicationScripting.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSColorPanel.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSHelpManager.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSPageLayout.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSUserInterfaceItemSearching.h - - - - NSArrayController - NSObjectController - - IBFrameworkSource - AppKit.framework/Headers/NSArrayController.h - - - - NSBox - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSBox.h - - - - NSButton - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSButton.h - - - - NSButtonCell - NSActionCell - - IBFrameworkSource - AppKit.framework/Headers/NSButtonCell.h - - - - NSCell - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSCell.h - - - - NSControl - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSControl.h - - - - NSController - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSController.h - - - - NSDictionary - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSDictionary.h - - - - NSDictionary - - IBFrameworkSource - Foundation.framework/Headers/NSFileManager.h - - - - NSDictionary - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueCoding.h - - - - NSFormatter - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFormatter.h - - - - NSImageCell - NSCell - - IBFrameworkSource - AppKit.framework/Headers/NSImageCell.h - - - - NSImageView - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSImageView.h - - - - NSMenu - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSMenu.h - - - - NSMenuItem - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSMenuItem.h - - - - NSMenuItemCell - NSButtonCell - - IBFrameworkSource - AppKit.framework/Headers/NSMenuItemCell.h - - - - NSMutableDictionary - NSDictionary - - - - NSMutableDictionary - - - - NSNumberFormatter - NSFormatter - - IBFrameworkSource - Foundation.framework/Headers/NSNumberFormatter.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSAccessibility.h - - - - NSObject - - - - NSObject - - - - NSObject - - - - NSObject - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSDictionaryController.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSDragging.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSFontManager.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSFontPanel.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSKeyValueBinding.h - - - - NSObject - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSNibLoading.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSOutlineView.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSPasteboard.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSSavePanel.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSTableView.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSToolbarItem.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSView.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSClassDescription.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSError.h - - - - NSObject - - - - NSObject - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueObserving.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyedArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObject.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObjectScripting.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSPortCoder.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSRunLoop.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSScriptClassDescription.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSScriptKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSScriptObjectSpecifiers.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSScriptWhoseTests.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSThread.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURL.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLConnection.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLDownload.h - - - - NSObject - - IBFrameworkSource - Growl.framework/Headers/GrowlApplicationBridge.h - - - - NSObject - - IBFrameworkSource - PSMTabBar.framework/Headers/PSMTabBarCell.h - - - - NSObject - - IBFrameworkSource - PSMTabBar.framework/Headers/PSMTabBarControl.h - - - - NSObject - - IBFrameworkSource - Print.framework/Headers/PDEPluginInterface.h - - - - NSObject - - IBFrameworkSource - PrintCore.framework/Headers/PDEPluginInterface.h - - - - NSObject - - IBFrameworkSource - ShortcutRecorder.framework/Headers/SRRecorderCell.h - - - - NSObject - - IBFrameworkSource - ShortcutRecorder.framework/Headers/SRRecorderControl.h - - - - NSObject - - IBFrameworkSource - ShortcutRecorder.framework/Headers/SRValidator.h - - - - NSObject - - IBFrameworkSource - Sparkle.framework/Headers/SUAppcast.h - - - - NSObject - - IBFrameworkSource - Sparkle.framework/Headers/SUUpdater.h - - - - NSObject - - IBFrameworkSource - WebKit.framework/Headers/WebDownload.h - - - - NSObject - - IBFrameworkSource - WebKit.framework/Headers/WebEditingDelegate.h - - - - NSObject - - IBFrameworkSource - WebKit.framework/Headers/WebFrameLoadDelegate.h - - - - NSObject - - IBFrameworkSource - WebKit.framework/Headers/WebJavaPlugIn.h - - - - NSObject - - IBFrameworkSource - WebKit.framework/Headers/WebPlugin.h - - - - NSObject - - IBFrameworkSource - WebKit.framework/Headers/WebPluginContainer.h - - - - NSObject - - IBFrameworkSource - WebKit.framework/Headers/WebPolicyDelegate.h - - - - NSObject - - IBFrameworkSource - WebKit.framework/Headers/WebResourceLoadDelegate.h - - - - NSObject - - IBFrameworkSource - WebKit.framework/Headers/WebScriptObject.h - - - - NSObject - - IBFrameworkSource - WebKit.framework/Headers/WebUIDelegate.h - - - - NSObjectController - NSController - - IBFrameworkSource - AppKit.framework/Headers/NSObjectController.h - - - - NSOutlineView - NSTableView - - - - NSPopUpButton - NSButton - - IBFrameworkSource - AppKit.framework/Headers/NSPopUpButton.h - - - - NSPopUpButtonCell - NSMenuItemCell - - IBFrameworkSource - AppKit.framework/Headers/NSPopUpButtonCell.h - - - - NSResponder - - IBFrameworkSource - AppKit.framework/Headers/NSInterfaceStyle.h - - - - NSResponder - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSResponder.h - - - - NSScrollView - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSScrollView.h - - - - NSScroller - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSScroller.h - - - - NSSecureTextField - NSTextField - - IBFrameworkSource - AppKit.framework/Headers/NSSecureTextField.h - - - - NSSecureTextFieldCell - NSTextFieldCell - - - - NSSplitView - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSSplitView.h - - - - NSTabView - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSTabView.h - - - - NSTabViewItem - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSTabViewItem.h - - - - NSTableColumn - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSTableColumn.h - - - - NSTableHeaderView - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSTableHeaderView.h - - - - NSTableView - NSControl - - - - NSText - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSText.h - - - - NSTextField - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSTextField.h - - - - NSTextFieldCell - NSActionCell - - IBFrameworkSource - AppKit.framework/Headers/NSTextFieldCell.h - - - - NSTextView - NSText - - IBFrameworkSource - AppKit.framework/Headers/NSTextView.h - - - - NSTreeController - NSObjectController - - IBFrameworkSource - AppKit.framework/Headers/NSTreeController.h - - - - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSClipView.h - - - - NSView - - - - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSRulerView.h - - - - NSView - NSResponder - - - - NSWindow - - IBFrameworkSource - AppKit.framework/Headers/NSDrawer.h - - - - NSWindow - NSResponder - - IBFrameworkSource - AppKit.framework/Headers/NSWindow.h - - - - NSWindow - - IBFrameworkSource - AppKit.framework/Headers/NSWindowScripting.h - - - - NSWindowController - NSResponder - - showWindow: - id - - - showWindow: - - showWindow: - id - - - - IBFrameworkSource - AppKit.framework/Headers/NSWindowController.h - - - - - 0 - IBCocoaFramework - - com.apple.InterfaceBuilder.CocoaPlugin.macosx - - - - com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 - - - YES - ../../sequel-pro.xcodeproj - 3 - - YES - - YES - NSLeftFacingTriangleTemplate - NSMenuCheckmark - NSMenuMixedState - NSRightFacingTriangleTemplate - NSSwitch - button_action - button_add - button_bar_handle - button_bar_spacer - button_remove - - - YES - {9, 9} - {9, 8} - {7, 2} - {9, 9} - {15, 15} - {32, 23} - {32, 23} - {15, 23} - {10, 23} - {32, 23} - - - + + LucidaGrande + 13 + 16 + + + + + + + + + 274 + + YES + + + 2304 + + YES + + + 2322 + {405, 14} + + + + + + + + + + + YES + + + 134 + + + + 405 + 1 + + + 100665605 + 0 + + + + YES + + YES + NSBackgroundColor + NSColor + + + YES + + 6 + System + selectedTextBackgroundColor + + + + 6 + System + selectedTextColor + + + + + + + YES + + YES + NSColor + NSCursor + NSUnderline + + + YES + + + {8, -8} + 13 + + + + + + + 0 + + 6 + {463, 10000000} + {223, 0} + + + + {{1, 1}, {405, 115}} + + + + + + {4, -5} + 1 + + 4 + + + + -2147483392 + {{424, 1}, {15, 257}} + + + _doScroller: + 1 + 0.85256409645080566 + + + + -2147483392 + {{-100, -100}, {87, 18}} + + 1 + + _doScroller: + 1 + 0.94565218687057495 + + + {{20, 61}, {407, 117}} + + + 133682 + + + + + + + 289 + {{308, 13}, {125, 32}} + + YES + + 67239424 + 134217728 + OK + + + -2038284033 + 129 + + DQ + 200 + 25 + + + + {447, 300} + + {{0, 0}, {1440, 878}} + {447, 322} + {1.7976931348623157e+308, 1.7976931348623157e+308} + YES + + + + + YES + + + treeController + + + + 101 + + + + outlineView + + + + 102 + + + + tabView + + + + 103 + + + + delegate + + + + 168 + + + + managedObjectContext: managedObjectContext + + + + + + managedObjectContext: managedObjectContext + managedObjectContext + managedObjectContext + 2 + + + 355 + + + + doApply: + + + + 399 + + + + doCancel: + + + + 400 + + + + value: selection.select_priv + + + + + + value: selection.select_priv + value + selection.select_priv + 2 + + + 514 + + + + value: selection.insert_priv + + + + + + value: selection.insert_priv + value + selection.insert_priv + 2 + + + 516 + + + + value: selection.update_priv + + + + + + value: selection.update_priv + value + selection.update_priv + 2 + + + 518 + + + + value: selection.delete_priv + + + + + + value: selection.delete_priv + value + selection.delete_priv + 2 + + + 519 + + + + value: selection.references_priv + + + + + + value: selection.references_priv + value + selection.references_priv + 2 + + + 520 + + + + value: selection.create_priv + + + + + + value: selection.create_priv + value + selection.create_priv + 2 + + + 521 + + + + value: selection.drop_priv + + + + + + value: selection.drop_priv + value + selection.drop_priv + 2 + + + 522 + + + + value: selection.alter_priv + + + + + + value: selection.alter_priv + value + selection.alter_priv + 2 + + + 523 + + + + value: selection.index_priv + + + + + + value: selection.index_priv + value + selection.index_priv + 2 + + + 524 + + + + value: selection.create_view_priv + + + + + + value: selection.create_view_priv + value + selection.create_view_priv + 2 + + + 525 + + + + value: selection.show_view_priv + + + + + + value: selection.show_view_priv + value + selection.show_view_priv + 2 + + + 526 + + + + value: selection.create_routine_priv + + + + + + value: selection.create_routine_priv + value + selection.create_routine_priv + 2 + + + 527 + + + + value: selection.alter_routine_priv + + + + + + value: selection.alter_routine_priv + value + selection.alter_routine_priv + 2 + + + 528 + + + + value: selection.execute_priv + + + + + + value: selection.execute_priv + value + selection.execute_priv + 2 + + + 529 + + + + value: selection.reload_priv + + + + + + value: selection.reload_priv + value + selection.reload_priv + 2 + + + 530 + + + + value: selection.shutdown_priv + + + + + + value: selection.shutdown_priv + value + selection.shutdown_priv + 2 + + + 531 + + + + value: selection.file_priv + + + + + + value: selection.file_priv + value + selection.file_priv + 2 + + + 532 + + + + value: selection.process_priv + + + + + + value: selection.process_priv + value + selection.process_priv + 2 + + + 533 + + + + value: selection.super_priv + + + + + + value: selection.super_priv + value + selection.super_priv + 2 + + + 534 + + + + value: selection.lock_tables_priv + + + + + + value: selection.lock_tables_priv + value + selection.lock_tables_priv + 2 + + + 537 + + + + value: selection.show_databases_priv + + + + + + value: selection.show_databases_priv + value + selection.show_databases_priv + 2 + + + 538 + + + + value: selection.create_user_priv + + + + + + value: selection.create_user_priv + value + selection.create_user_priv + 2 + + + 539 + + + + value: selection.grant_option_priv + + + + + + value: selection.grant_option_priv + value + selection.grant_option_priv + 2 + + + 540 + + + + value: selection.replication_client_priv + + + + + + value: selection.replication_client_priv + value + selection.replication_client_priv + 2 + + + 541 + + + + value: selection.replication_slave_priv + + + + + + value: selection.replication_slave_priv + value + selection.replication_slave_priv + 2 + + + 542 + + + + value: selection.create_temporary_tables_priv + + + + + + value: selection.create_temporary_tables_priv + value + selection.create_temporary_tables_priv + 2 + + + 606 + + + + privsSupportedByServer + + + + 649 + + + + enabled: select_priv + + + + + + enabled: select_priv + enabled + select_priv + + NSValueTransformerName + NSIsNotNil + + 2 + + + 653 + + + + enabled: insert_priv + + + + + + enabled: insert_priv + enabled + insert_priv + + NSValueTransformerName + NSIsNotNil + + 2 + + + 657 + + + + enabled: update_priv + + + + + + enabled: update_priv + enabled + update_priv + + NSValueTransformerName + NSIsNotNil + + 2 + + + 661 + + + + enabled: delete_priv + + + + + + enabled: delete_priv + enabled + delete_priv + + NSValueTransformerName + NSIsNotNil + + 2 + + + 665 + + + + enabled: references_priv + + + + + + enabled: references_priv + enabled + references_priv + + NSValueTransformerName + NSIsNotNil + + 2 + + + 669 + + + + enabled: create_priv + + + + + + enabled: create_priv + enabled + create_priv + + NSValueTransformerName + NSIsNotNil + + 2 + + + 673 + + + + enabled: drop_priv + + + + + + enabled: drop_priv + enabled + drop_priv + + NSValueTransformerName + NSIsNotNil + + 2 + + + 677 + + + + enabled: alter_priv + + + + + + enabled: alter_priv + enabled + alter_priv + + NSValueTransformerName + NSIsNotNil + + 2 + + + 679 + + + + enabled: index_priv + + + + + + enabled: index_priv + enabled + index_priv + + NSValueTransformerName + NSIsNotNil + + 2 + + + 683 + + + + enabled: reload_priv + + + + + + enabled: reload_priv + enabled + reload_priv + + NSValueTransformerName + NSIsNotNil + + 2 + + + 685 + + + + enabled: shutdown_priv + + + + + + enabled: shutdown_priv + enabled + shutdown_priv + + NSValueTransformerName + NSIsNotNil + + 2 + + + 687 + + + + enabled: file_priv + + + + + + enabled: file_priv + enabled + file_priv + + NSValueTransformerName + NSIsNotNil + + 2 + + + 689 + + + + enabled: process_priv + + + + + + enabled: process_priv + enabled + process_priv + + NSValueTransformerName + NSIsNotNil + + 2 + + + 691 + + + + enabled: super_priv + + + + + + enabled: super_priv + enabled + super_priv + + NSValueTransformerName + NSIsNotNil + + 2 + + + 693 + + + + enabled: lock_tables_priv + + + + + + enabled: lock_tables_priv + enabled + lock_tables_priv + + NSValueTransformerName + NSIsNotNil + + 2 + + + 697 + + + + enabled: show_databases_priv + + + + + + enabled: show_databases_priv + enabled + show_databases_priv + + NSValueTransformerName + NSIsNotNil + + 2 + + + 699 + + + + enabled: create_user_priv + + + + + + enabled: create_user_priv + enabled + create_user_priv + + NSValueTransformerName + NSIsNotNil + + 2 + + + 701 + + + + enabled: grant_option_priv + + + + + + enabled: grant_option_priv + enabled + grant_option_priv + + NSValueTransformerName + NSIsNotNil + + 2 + + + 703 + + + + enabled: create_view_priv + + + + + + enabled: create_view_priv + enabled + create_view_priv + + NSValueTransformerName + NSIsNotNil + + 2 + + + 705 + + + + enabled: show_view_priv + + + + + + enabled: show_view_priv + enabled + show_view_priv + + NSValueTransformerName + NSIsNotNil + + 2 + + + 707 + + + + enabled: create_routine_priv + + + + + + enabled: create_routine_priv + enabled + create_routine_priv + + NSValueTransformerName + NSIsNotNil + + 2 + + + 709 + + + + enabled: alter_routine_priv + + + + + + enabled: alter_routine_priv + enabled + alter_routine_priv + + NSValueTransformerName + NSIsNotNil + + 2 + + + 711 + + + + enabled: execute_priv + + + + + + enabled: execute_priv + enabled + execute_priv + + NSValueTransformerName + NSIsNotNil + + 2 + + + 713 + + + + enabled: replication_client_priv + + + + + + enabled: replication_client_priv + enabled + replication_client_priv + + NSValueTransformerName + NSIsNotNil + + 2 + + + 715 + + + + enabled: replication_slave_priv + + + + + + enabled: replication_slave_priv + enabled + replication_slave_priv + + NSValueTransformerName + NSIsNotNil + + 2 + + + 717 + + + + enabled: create_temporary_tables_priv + + + + + + enabled: create_temporary_tables_priv + enabled + create_temporary_tables_priv + + NSValueTransformerName + NSIsNotNil + + 2 + + + 718 + + + + value: selection.trigger_priv + + + + + + value: selection.trigger_priv + value + selection.trigger_priv + 2 + + + 723 + + + + enabled: trigger_priv + + + + + + enabled: trigger_priv + enabled + trigger_priv + + NSValueTransformerName + NSIsNotNil + + 2 + + + 724 + + + + enabled: event_priv + + + + + + enabled: event_priv + enabled + event_priv + + NSValueTransformerName + NSIsNotNil + + 2 + + + 729 + + + + value: selection.event_priv + + + + + + value: selection.event_priv + value + selection.event_priv + 2 + + + 730 + + + + checkAllPrivileges: + + + + 731 + + + + uncheckAllPrivileges: + + + + 732 + + + + window + + + + 733 + + + + delegate + + + + 734 + + + + delegate + + + + 735 + + + + value: selection.password + + + + + + value: selection.password + value + selection.password + + YES + + YES + NSConditionallySetsHidden + NSNoSelectionPlaceholder + NSNullPlaceholder + NSRaisesForNotApplicableKeys + NSValidatesImmediately + + + YES + + No Selection + Empty Password + + + + + 2 + + + 736 + + + + sortDescriptors: treeSortDescriptors + + + + + + sortDescriptors: treeSortDescriptors + sortDescriptors + treeSortDescriptors + 2 + + + 740 + + + + availableController + + + + 789 + + + + grantedController + + + + 790 + + + + addSchemaPriv: + + + + 792 + + + + contentArray: availablePrivs + + + + + + contentArray: availablePrivs + contentArray + availablePrivs + 2 + + + 821 + + + + delegate + + + + 826 + + + + schemasTableView + + + + 827 + + + + dataSource + + + + 848 + + + + delegate + + + + 849 + + + + dataSource + + + + 850 + + + + delegate + + + + 851 + + + + grantedTableView + + + + 854 + + + + availableTableView + + + + 855 + + + + value: arrangedObjects.displayName + + + + + + value: arrangedObjects.displayName + value + arrangedObjects.displayName + + NSConditionallySetsEditable + + + 2 + + + 861 + + + + value: arrangedObjects.displayName + + + + + + value: arrangedObjects.displayName + value + arrangedObjects.displayName + + NSConditionallySetsEditable + + + 2 + + + 866 + + + + addSchemaPrivButton + + + + 883 + + + + value: arrangedObjects.displayName + + + + + + value: arrangedObjects.displayName + value + arrangedObjects.displayName + + YES + + YES + NSAllowsEditingMultipleValuesSelection + NSNullPlaceholder + NSValidatesImmediately + + + YES + + Anonymous + + + + 2 + + + 887 + + + + value: selection.displayName + + + + + + value: selection.displayName + value + selection.displayName + + YES + + YES + NSContinuouslyUpdatesValue + NSNoSelectionPlaceholder + NSNotApplicablePlaceholder + NSNullPlaceholder + NSRaisesForNotApplicableKeys + NSValidatesImmediately + + + YES + + No Selection + User Not Selected + Anonymous + + + + + 2 + + + 892 + + + + userNameTextField + + + + 893 + + + + menu + + + + 902 + + + + refresh: + + + + 903 + + + + removeUser: + + + + 905 + + + + removeHost: + + + + 907 + + + + enabled: selection.parent + + + + + + enabled: selection.parent + enabled + selection.parent + + NSValueTransformerName + NSIsNil + + 2 + + + 913 + + + + delegate + + + + 914 + + + + removeSchemaPriv: + + + + 921 + + + + removeSchemaPrivButton + + + + 922 + + + + delegate + + + + 924 + + + + contentArray: grantedSchemaPrivs + + + + + + contentArray: grantedSchemaPrivs + contentArray + grantedSchemaPrivs + + NSDeletesObjectsOnRemove + + + 2 + + + 929 + + + + value: selection.max_updates + + + + + + value: selection.max_updates + value + selection.max_updates + 2 + + + 975 + + + + value: selection.max_connections + + + + + + value: selection.max_connections + value + selection.max_connections + 2 + + + 977 + + + + value: selection.max_questions + + + + + + value: selection.max_questions + value + selection.max_questions + 2 + + + 979 + + + + maxUpdatesTextField + + + + 980 + + + + maxConnectionsTextField + + + + 981 + + + + maxQuestionsTextField + + + + 982 + + + + errorsSheet + + + + 993 + + + + errorsTextView + + + + 994 + + + + closeErrorsSheet: + + + + 998 + + + + splitView + + + + 1000 + + + + additionalDragHandleView + + + + 1005 + + + + addUser: + + + + 1021 + + + + enabled: selection.parent + + + + + + enabled: selection.parent + enabled + selection.parent + + NSValueTransformerName + NSIsNil + + 2 + + + 1024 + + + + removeUser: + + + + 1025 + + + + enabled: selection.parent + + + + + + enabled: selection.parent + enabled + selection.parent + + NSValueTransformerName + NSIsNil + + 2 + + + 1028 + + + + refresh: + + + + 1033 + + + + addHost: + + + + 1034 + + + + removeHost: + + + + 1035 + + + + dataSource + + + + 1036 + + + + + YES + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 3 + + + YES + + + + UserManagerView + + + 4 + + + YES + + + + + + 25 + + + YES + + + + + + + 48 + + + + + 26 + + + YES + + + + + + + + + + + 28 + + + YES + + + + + + + + + 31 + + + YES + + + + + + 33 + + + YES + + + + + + 36 + + + + + 30 + + + + + 29 + + + + + 648 + + + SupportedPrivileges + + + 27 + + + YES + + + + + + + + 37 + + + YES + + + + + + + + + 38 + + + YES + + + + + + 41 + + + YES + + + + + + 44 + + + YES + + + + + + + + + 112 + + + YES + + + + + + 113 + + + + + 116 + + + YES + + + + + + 117 + + + + + 114 + + + YES + + + + + + 115 + + + + + 110 + + + YES + + + + + + 111 + + + + + 42 + + + YES + + + + + + 43 + + + YES + + + + + + 593 + + + YES + + + + + + + + + + + 189 + + + YES + + + + + + 190 + + + YES + + + + + + 592 + + + YES + + + + + + + + + + + 509 + + + YES + + + + + + 510 + + + + + 452 + + + YES + + + + + + + + + + 479 + + + YES + + + + + + 480 + + + + + 481 + + + YES + + + + + + 482 + + + + + 473 + + + YES + + + + + + 474 + + + + + 475 + + + YES + + + + + + 476 + + + + + 477 + + + YES + + + + + + 478 + + + + + 451 + + + YES + + + + + + + + + + + + + + + 719 + + + YES + + + + + + 720 + + + + + 455 + + + YES + + + + + + 456 + + + + + 457 + + + YES + + + + + + 458 + + + + + 459 + + + YES + + + + + + 460 + + + + + 461 + + + YES + + + + + + 462 + + + + + 463 + + + YES + + + + + + 464 + + + + + 465 + + + YES + + + + + + 466 + + + + + 467 + + + YES + + + + + + 468 + + + + + 469 + + + YES + + + + + + 470 + + + + + 471 + + + YES + + + + + + 472 + + + + + 453 + + + YES + + + + + + + + + + + + + + + + 725 + + + YES + + + + + + 726 + + + + + 487 + + + YES + + + + + + 488 + + + + + 489 + + + YES + + + + + + 490 + + + + + 491 + + + YES + + + + + + 492 + + + + + 493 + + + YES + + + + + + 494 + + + + + 495 + + + YES + + + + + + 496 + + + + + 497 + + + YES + + + + + + 498 + + + + + 499 + + + YES + + + + + + 500 + + + + + 501 + + + YES + + + + + + 502 + + + + + 503 + + + YES + + + + + + 504 + + + + + 505 + + + YES + + + + + + 506 + + + + + 454 + + + YES + + + + + + + 485 + + + YES + + + + + + 486 + + + + + 483 + + + YES + + + + + + 484 + + + + + 122 + + + YES + + + + + + 123 + + + + + 124 + + + YES + + + + + + 125 + + + + + 743 + + + YES + + + + + + 744 + + + YES + + + + + + + + + + 745 + + + YES + + + + + + + + + 746 + + + + + 747 + + + + + 748 + + + YES + + + + + + 749 + + + + + 750 + + + YES + + + + + + 753 + + + + + 768 + + + YES + + + + + + + + + 770 + + + YES + + + + + + 771 + + + + + 772 + + + + + 773 + + + YES + + + + + + 774 + + + + + 775 + + + YES + + + + + + + + + 776 + + + + + 777 + + + YES + + + + + + 778 + + + + + 779 + + + + + 780 + + + YES + + + + + + 781 + + + + + 782 + + + YES + + + + + + 783 + + + + + 787 + + + GrantedPrivs + + + 788 + + + AvailablePrivs + + + 867 + + + + + 894 + + + YES + + + + + + + Context Menu + + + 896 + + + + + 899 + + + + + 900 + + + + + 901 + + + + + 918 + + + YES + + + + + + 919 + + + + + 923 + + + + + 953 + + + YES + + + + + + 954 + + + + + 955 + + + YES + + + + + + 956 + + + + + 957 + + + YES + + + + + + 958 + + + + + 965 + + + YES + + + + + + 966 + + + YES + + + + + + 967 + + + + + 968 + + + YES + + + + + + 969 + + + YES + + + + + + 970 + + + + + 971 + + + YES + + + + + + 972 + + + YES + + + + + + 973 + + + + + 983 + + + YES + + + + Errors Sheet + + + 984 + + + YES + + + + + + + + 985 + + + YES + + + + + + 986 + + + + + 987 + + + YES + + + + + + + + 988 + + + + + 989 + + + + + 990 + + + + + 995 + + + YES + + + + + + 996 + + + + + 511 + + + YES + + + + + + 512 + + + + + 1001 + + + YES + + + + + + 1002 + + + + + 1003 + + + YES + + + + + + 1004 + + + + + 1006 + + + YES + + + + + + 1007 + + + YES + + + + + + 1008 + + + YES + + + + + + 1009 + + + + + 1010 + + + + + 1011 + + + YES + + + + + + 1012 + + + YES + + + + + + + + + + 1019 + + + + + 1029 + + + + + 1030 + + + + + 1031 + + + + + 1032 + + + + + + + YES + + YES + -3.IBPluginDependency + 1001.IBPluginDependency + 1001.IBViewBoundsToFrameTransform + 1002.IBPluginDependency + 1003.IBPluginDependency + 1003.IBViewBoundsToFrameTransform + 1004.IBPluginDependency + 1006.IBPluginDependency + 1006.IBViewBoundsToFrameTransform + 1007.IBAttributePlaceholdersKey + 1007.IBPluginDependency + 1007.IBViewBoundsToFrameTransform + 1008.IBAttributePlaceholdersKey + 1008.IBPluginDependency + 1008.IBViewBoundsToFrameTransform + 1009.IBPluginDependency + 1010.IBPluginDependency + 1011.IBPluginDependency + 1012.IBEditorWindowLastContentRect + 1012.IBPluginDependency + 1019.IBPluginDependency + 1029.IBPluginDependency + 1030.IBPluginDependency + 1031.IBPluginDependency + 1032.IBPluginDependency + 110.IBPluginDependency + 111.IBPluginDependency + 112.IBPluginDependency + 113.IBPluginDependency + 114.IBPluginDependency + 115.IBPluginDependency + 116.IBPluginDependency + 117.IBPluginDependency + 122.IBPluginDependency + 123.IBPluginDependency + 124.IBPluginDependency + 125.IBPluginDependency + 189.IBPluginDependency + 190.IBPluginDependency + 25.CustomClassName + 25.IBPluginDependency + 26.IBPluginDependency + 27.IBPluginDependency + 28.IBPluginDependency + 29.IBPluginDependency + 3.IBEditorWindowLastContentRect + 3.IBPluginDependency + 3.IBWindowTemplateEditedContentRect + 3.NSWindowTemplate.visibleAtLaunch + 3.windowTemplate.hasMinSize + 3.windowTemplate.minSize + 30.IBPluginDependency + 31.CustomClassName + 31.IBPluginDependency + 33.IBPluginDependency + 36.IBPluginDependency + 37.IBAttributePlaceholdersKey + 37.IBPluginDependency + 38.IBPluginDependency + 4.IBPluginDependency + 41.IBPluginDependency + 42.IBPluginDependency + 43.IBPluginDependency + 44.IBPluginDependency + 451.IBPluginDependency + 451.IBViewBoundsToFrameTransform + 452.IBPluginDependency + 452.IBViewBoundsToFrameTransform + 453.IBPluginDependency + 453.IBViewBoundsToFrameTransform + 454.IBPluginDependency + 454.IBViewBoundsToFrameTransform + 455.IBPluginDependency + 456.IBPluginDependency + 457.IBPluginDependency + 458.IBPluginDependency + 459.IBPluginDependency + 460.IBPluginDependency + 461.IBPluginDependency + 462.IBPluginDependency + 463.IBPluginDependency + 464.IBPluginDependency + 465.IBPluginDependency + 465.IBViewBoundsToFrameTransform + 466.IBPluginDependency + 467.IBPluginDependency + 467.IBViewBoundsToFrameTransform + 468.IBPluginDependency + 469.IBPluginDependency + 469.IBViewBoundsToFrameTransform + 470.IBPluginDependency + 471.IBPluginDependency + 471.IBViewBoundsToFrameTransform + 472.IBPluginDependency + 473.IBPluginDependency + 474.IBPluginDependency + 475.IBPluginDependency + 476.IBPluginDependency + 477.IBPluginDependency + 478.IBPluginDependency + 479.IBPluginDependency + 48.IBPluginDependency + 480.IBPluginDependency + 481.IBPluginDependency + 482.IBPluginDependency + 483.IBPluginDependency + 484.IBPluginDependency + 485.IBPluginDependency + 486.IBPluginDependency + 487.IBPluginDependency + 488.IBPluginDependency + 489.IBPluginDependency + 490.IBPluginDependency + 491.IBPluginDependency + 492.IBPluginDependency + 493.IBPluginDependency + 494.IBPluginDependency + 495.IBPluginDependency + 496.IBPluginDependency + 497.IBPluginDependency + 498.IBPluginDependency + 499.IBPluginDependency + 500.IBPluginDependency + 501.IBPluginDependency + 502.IBPluginDependency + 503.IBPluginDependency + 504.IBPluginDependency + 505.IBPluginDependency + 506.IBPluginDependency + 509.IBPluginDependency + 509.IBViewBoundsToFrameTransform + 510.IBPluginDependency + 511.IBPluginDependency + 511.IBViewBoundsToFrameTransform + 512.IBPluginDependency + 592.IBPluginDependency + 593.IBPluginDependency + 719.IBPluginDependency + 719.IBViewBoundsToFrameTransform + 720.IBPluginDependency + 725.IBPluginDependency + 726.IBPluginDependency + 743.IBPluginDependency + 744.IBPluginDependency + 745.IBPluginDependency + 746.IBPluginDependency + 747.IBPluginDependency + 748.IBPluginDependency + 749.IBPluginDependency + 750.IBPluginDependency + 753.IBPluginDependency + 768.IBPluginDependency + 770.IBPluginDependency + 771.IBPluginDependency + 772.IBPluginDependency + 773.IBPluginDependency + 774.IBPluginDependency + 775.IBPluginDependency + 776.IBPluginDependency + 777.IBPluginDependency + 778.IBPluginDependency + 779.IBPluginDependency + 780.IBPluginDependency + 781.IBPluginDependency + 782.IBPluginDependency + 783.IBPluginDependency + 787.IBPluginDependency + 788.IBPluginDependency + 867.IBPluginDependency + 894.IBEditorWindowLastContentRect + 894.IBPluginDependency + 896.IBPluginDependency + 899.IBPluginDependency + 900.IBPluginDependency + 901.IBPluginDependency + 918.IBPluginDependency + 919.IBPluginDependency + 923.IBPluginDependency + 953.IBPluginDependency + 954.IBPluginDependency + 955.IBPluginDependency + 956.IBPluginDependency + 957.IBPluginDependency + 958.IBPluginDependency + 965.IBPluginDependency + 966.IBPluginDependency + 967.IBNumberFormatterBehaviorMetadataKey + 967.IBNumberFormatterLocalizesFormatMetadataKey + 967.IBPluginDependency + 968.IBPluginDependency + 969.IBPluginDependency + 970.IBNumberFormatterBehaviorMetadataKey + 970.IBNumberFormatterLocalizesFormatMetadataKey + 970.IBPluginDependency + 971.IBPluginDependency + 972.IBPluginDependency + 973.IBNumberFormatterBehaviorMetadataKey + 973.IBNumberFormatterLocalizesFormatMetadataKey + 973.IBPluginDependency + 983.IBEditorWindowLastContentRect + 983.IBPluginDependency + 983.IBWindowTemplateEditedContentRect + 983.NSWindowTemplate.visibleAtLaunch + 983.windowTemplate.hasMinSize + 983.windowTemplate.minSize + 984.IBPluginDependency + 985.IBPluginDependency + 986.IBPluginDependency + 987.IBPluginDependency + 988.IBPluginDependency + 989.IBPluginDependency + 990.IBPluginDependency + 995.IBPluginDependency + 996.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + AQAAAABAIAAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + AUL+AABAAAAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCdAAAwbgAAA + + + ToolTip + + ToolTip + + Remove User + + + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABB8AAAwbgAAA + + + ToolTip + + ToolTip + + Add User + + + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAAC/gAAAwbgAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{283, 286}, {130, 89}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + SPSplitView + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{233, 350}, {815, 506}} + com.apple.InterfaceBuilder.CocoaPlugin + {{233, 350}, {815, 506}} + + + {752, 506} + com.apple.InterfaceBuilder.CocoaPlugin + SPOutlineView + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + InitialTabViewItem + + InitialTabViewItem + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + AUGIAABDEQAAA + + com.apple.InterfaceBuilder.CocoaPlugin + + AUOIgABDdQAAA + + com.apple.InterfaceBuilder.CocoaPlugin + + AUOIgABBEAAAA + + com.apple.InterfaceBuilder.CocoaPlugin + + AUGIAABChgAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABBgAAAwtgAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDFQAAw28AAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDFQAAw1sAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDFQAAw0cAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABBYAAAwlQAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCpAAAwigAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDFQAAwzMAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{841, 716}, {141, 73}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + {{431, 391}, {447, 300}} + com.apple.InterfaceBuilder.CocoaPlugin + {{431, 391}, {447, 300}} + + + {447, 300} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + YES + + + YES + + + + + YES + + + YES + + + + 1036 + + + + YES + + NSApplication + + IBProjectSource + Frameworks/PSMTabBar/PSMTabDragAssistant.h + + + + NSDictionary + + IBProjectSource + Source/NSDictionary_DeepMutableCopy.h + + + + NSMenu + + IBProjectSource + Source/SPMenuAdditions.h + + + + NSObject + + IBProjectSource + Frameworks/PSMTabBar/PSMTabBarCell.h + + + + NSObject + + IBProjectSource + Frameworks/PSMTabBar/PSMTabBarControl.h + + + + NSObject + + IBProjectSource + Frameworks/PSMTabBar/PSMTabBarController.h + + + + NSObject + + IBProjectSource + Source/SPContentFilterManager.h + + + + NSObject + + IBProjectSource + Source/SPImageView.h + + + + NSObject + + IBProjectSource + Source/SPMainThreadTrampoline.h + + + + NSObject + + IBProjectSource + Source/SPNotLoaded.h + + + + NSObject + + IBProjectSource + Source/SPObjectAdditions.h + + + + NSObject + + IBProjectSource + Source/SPQueryFavoriteManager.h + + + + NSTextView + + YES + + YES + doDecomposedStringWithCanonicalMapping: + doDecomposedStringWithCompatibilityMapping: + doPrecomposedStringWithCanonicalMapping: + doPrecomposedStringWithCompatibilityMapping: + doRemoveDiacritics: + doSelectionLowerCase: + doSelectionTitleCase: + doSelectionUpperCase: + doTranspose: + executeBundleItemForInputField: + insertNULLvalue: + moveSelectionLineDown: + moveSelectionLineUp: + selectCurrentLine: + selectCurrentWord: + selectEnclosingBrackets: + + + YES + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + + + + YES + + YES + doDecomposedStringWithCanonicalMapping: + doDecomposedStringWithCompatibilityMapping: + doPrecomposedStringWithCanonicalMapping: + doPrecomposedStringWithCompatibilityMapping: + doRemoveDiacritics: + doSelectionLowerCase: + doSelectionTitleCase: + doSelectionUpperCase: + doTranspose: + executeBundleItemForInputField: + insertNULLvalue: + moveSelectionLineDown: + moveSelectionLineUp: + selectCurrentLine: + selectCurrentWord: + selectEnclosingBrackets: + + + YES + + doDecomposedStringWithCanonicalMapping: + id + + + doDecomposedStringWithCompatibilityMapping: + id + + + doPrecomposedStringWithCanonicalMapping: + id + + + doPrecomposedStringWithCompatibilityMapping: + id + + + doRemoveDiacritics: + id + + + doSelectionLowerCase: + id + + + doSelectionTitleCase: + id + + + doSelectionUpperCase: + id + + + doTranspose: + id + + + executeBundleItemForInputField: + id + + + insertNULLvalue: + id + + + moveSelectionLineDown: + id + + + moveSelectionLineUp: + id + + + selectCurrentLine: + id + + + selectCurrentWord: + id + + + selectEnclosingBrackets: + id + + + + + IBProjectSource + Source/SPTextViewAdditions.h + + + + NSWindow + + IBProjectSource + Source/SPWindowAdditions.h + + + + SPOutlineView + NSOutlineView + + IBProjectSource + Source/SPOutlineView.h + + + + SPSplitView + NSSplitView + + toggleCollapse: + id + + + toggleCollapse: + + toggleCollapse: + id + + + + YES + + YES + additionalDragHandleView + collapseToggleButton + delegate + + + YES + NSView + NSButton + id + + + + YES + + YES + additionalDragHandleView + collapseToggleButton + delegate + + + YES + + additionalDragHandleView + NSView + + + collapseToggleButton + NSButton + + + delegate + id + + + + + IBProjectSource + Source/SPSplitView.h + + + + SPUserManager + NSWindowController + + YES + + YES + addHost: + addSchemaPriv: + addUser: + checkAllPrivileges: + closeErrorsSheet: + doApply: + doCancel: + doubleClickSchemaPriv: + refresh: + removeHost: + removeSchemaPriv: + removeUser: + uncheckAllPrivileges: + + + YES + id + id + id + id + id + id + id + id + id + id + id + id + id + + + + YES + + YES + addHost: + addSchemaPriv: + addUser: + checkAllPrivileges: + closeErrorsSheet: + doApply: + doCancel: + doubleClickSchemaPriv: + refresh: + removeHost: + removeSchemaPriv: + removeUser: + uncheckAllPrivileges: + + + YES + + addHost: + id + + + addSchemaPriv: + id + + + addUser: + id + + + checkAllPrivileges: + id + + + closeErrorsSheet: + id + + + doApply: + id + + + doCancel: + id + + + doubleClickSchemaPriv: + id + + + refresh: + id + + + removeHost: + id + + + removeSchemaPriv: + id + + + removeUser: + id + + + uncheckAllPrivileges: + id + + + + + YES + + YES + addSchemaPrivButton + availableController + availableTableView + errorsSheet + errorsTextView + grantedController + grantedTableView + maxConnectionsTextField + maxQuestionsTextField + maxUpdatesTextField + outlineView + privsSupportedByServer + removeSchemaPrivButton + schemasTableView + splitView + tabView + treeController + userNameTextField + + + YES + NSButton + NSArrayController + NSTableView + NSWindow + NSTextView + NSArrayController + NSTableView + NSTextField + NSTextField + NSTextField + NSOutlineView + NSMutableDictionary + NSButton + NSTableView + SPSplitView + NSTabView + NSTreeController + NSTextField + + + + YES + + YES + addSchemaPrivButton + availableController + availableTableView + errorsSheet + errorsTextView + grantedController + grantedTableView + maxConnectionsTextField + maxQuestionsTextField + maxUpdatesTextField + outlineView + privsSupportedByServer + removeSchemaPrivButton + schemasTableView + splitView + tabView + treeController + userNameTextField + + + YES + + addSchemaPrivButton + NSButton + + + availableController + NSArrayController + + + availableTableView + NSTableView + + + errorsSheet + NSWindow + + + errorsTextView + NSTextView + + + grantedController + NSArrayController + + + grantedTableView + NSTableView + + + maxConnectionsTextField + NSTextField + + + maxQuestionsTextField + NSTextField + + + maxUpdatesTextField + NSTextField + + + outlineView + NSOutlineView + + + privsSupportedByServer + NSMutableDictionary + + + removeSchemaPrivButton + NSButton + + + schemasTableView + NSTableView + + + splitView + SPSplitView + + + tabView + NSTabView + + + treeController + NSTreeController + + + userNameTextField + NSTextField + + + + + IBProjectSource + Source/SPUserManager.h + + + + SPUserManager + + IBProjectSource + Source/SPUserManagerDataSource.h + + + + SPUserManager + + IBProjectSource + Source/SPUserManagerDelegate.h + + + + + YES + + NSActionCell + NSCell + + IBFrameworkSource + AppKit.framework/Headers/NSActionCell.h + + + + NSApplication + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSApplication.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSApplicationScripting.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSColorPanel.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSHelpManager.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSPageLayout.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSUserInterfaceItemSearching.h + + + + NSArrayController + NSObjectController + + IBFrameworkSource + AppKit.framework/Headers/NSArrayController.h + + + + NSBox + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSBox.h + + + + NSButton + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSButton.h + + + + NSButtonCell + NSActionCell + + IBFrameworkSource + AppKit.framework/Headers/NSButtonCell.h + + + + NSCell + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSCell.h + + + + NSControl + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSControl.h + + + + NSController + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSController.h + + + + NSDictionary + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSDictionary.h + + + + NSDictionary + + IBFrameworkSource + Foundation.framework/Headers/NSFileManager.h + + + + NSDictionary + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueCoding.h + + + + NSFormatter + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFormatter.h + + + + NSImageCell + NSCell + + IBFrameworkSource + AppKit.framework/Headers/NSImageCell.h + + + + NSImageView + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSImageView.h + + + + NSMenu + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenu.h + + + + NSMenuItem + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenuItem.h + + + + NSMenuItemCell + NSButtonCell + + IBFrameworkSource + AppKit.framework/Headers/NSMenuItemCell.h + + + + NSMutableDictionary + NSDictionary + + + + NSMutableDictionary + + + + NSNumberFormatter + NSFormatter + + IBFrameworkSource + Foundation.framework/Headers/NSNumberFormatter.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSAccessibility.h + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDictionaryController.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDragging.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontManager.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontPanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSKeyValueBinding.h + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSNibLoading.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSOutlineView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSPasteboard.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSSavePanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTableView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSToolbarItem.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSView.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSClassDescription.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSError.h + + + + NSObject + + + + NSObject + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueObserving.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyedArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObject.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObjectScripting.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSPortCoder.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSRunLoop.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptClassDescription.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptObjectSpecifiers.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptWhoseTests.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSThread.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURL.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLConnection.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLDownload.h + + + + NSObject + + IBFrameworkSource + Growl.framework/Headers/GrowlApplicationBridge.h + + + + NSObject + + IBFrameworkSource + PSMTabBar.framework/Headers/PSMTabBarCell.h + + + + NSObject + + IBFrameworkSource + PSMTabBar.framework/Headers/PSMTabBarControl.h + + + + NSObject + + IBFrameworkSource + Print.framework/Headers/PDEPluginInterface.h + + + + NSObject + + IBFrameworkSource + PrintCore.framework/Headers/PDEPluginInterface.h + + + + NSObject + + IBFrameworkSource + ShortcutRecorder.framework/Headers/SRRecorderCell.h + + + + NSObject + + IBFrameworkSource + ShortcutRecorder.framework/Headers/SRRecorderControl.h + + + + NSObject + + IBFrameworkSource + ShortcutRecorder.framework/Headers/SRValidator.h + + + + NSObject + + IBFrameworkSource + Sparkle.framework/Headers/SUAppcast.h + + + + NSObject + + IBFrameworkSource + Sparkle.framework/Headers/SUUpdater.h + + + + NSObject + + IBFrameworkSource + WebKit.framework/Headers/WebDownload.h + + + + NSObject + + IBFrameworkSource + WebKit.framework/Headers/WebEditingDelegate.h + + + + NSObject + + IBFrameworkSource + WebKit.framework/Headers/WebFrameLoadDelegate.h + + + + NSObject + + IBFrameworkSource + WebKit.framework/Headers/WebJavaPlugIn.h + + + + NSObject + + IBFrameworkSource + WebKit.framework/Headers/WebPlugin.h + + + + NSObject + + IBFrameworkSource + WebKit.framework/Headers/WebPluginContainer.h + + + + NSObject + + IBFrameworkSource + WebKit.framework/Headers/WebPolicyDelegate.h + + + + NSObject + + IBFrameworkSource + WebKit.framework/Headers/WebResourceLoadDelegate.h + + + + NSObject + + IBFrameworkSource + WebKit.framework/Headers/WebScriptObject.h + + + + NSObject + + IBFrameworkSource + WebKit.framework/Headers/WebUIDelegate.h + + + + NSObjectController + NSController + + IBFrameworkSource + AppKit.framework/Headers/NSObjectController.h + + + + NSOutlineView + NSTableView + + + + NSPopUpButton + NSButton + + IBFrameworkSource + AppKit.framework/Headers/NSPopUpButton.h + + + + NSPopUpButtonCell + NSMenuItemCell + + IBFrameworkSource + AppKit.framework/Headers/NSPopUpButtonCell.h + + + + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSInterfaceStyle.h + + + + NSResponder + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSResponder.h + + + + NSScrollView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSScrollView.h + + + + NSScroller + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSScroller.h + + + + NSSecureTextField + NSTextField + + IBFrameworkSource + AppKit.framework/Headers/NSSecureTextField.h + + + + NSSecureTextFieldCell + NSTextFieldCell + + + + NSSplitView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSSplitView.h + + + + NSTabView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSTabView.h + + + + NSTabViewItem + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTabViewItem.h + + + + NSTableColumn + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTableColumn.h + + + + NSTableHeaderView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSTableHeaderView.h + + + + NSTableView + NSControl + + + + NSText + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSText.h + + + + NSTextField + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSTextField.h + + + + NSTextFieldCell + NSActionCell + + IBFrameworkSource + AppKit.framework/Headers/NSTextFieldCell.h + + + + NSTextView + NSText + + IBFrameworkSource + AppKit.framework/Headers/NSTextView.h + + + + NSTreeController + NSObjectController + + IBFrameworkSource + AppKit.framework/Headers/NSTreeController.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSClipView.h + + + + NSView + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSRulerView.h + + + + NSView + NSResponder + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSDrawer.h + + + + NSWindow + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSWindow.h + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSWindowScripting.h + + + + NSWindowController + NSResponder + + showWindow: + id + + + showWindow: + + showWindow: + id + + + + IBFrameworkSource + AppKit.framework/Headers/NSWindowController.h + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + ../../sequel-pro.xcodeproj + 3 + + YES + + YES + NSLeftFacingTriangleTemplate + NSMenuCheckmark + NSMenuMixedState + NSRightFacingTriangleTemplate + NSSwitch + button_action + button_add + button_bar_handle + button_bar_spacer + button_remove + + + YES + {9, 9} + {11, 11} + {10, 3} + {9, 9} + {15, 15} + {32, 23} + {32, 23} + {15, 23} + {10, 23} + {32, 23} + + + diff --git a/Models/SPUserManager.xcdatamodel/elements b/Models/SPUserManager.xcdatamodel/elements index 01aa994f..a4d11321 100644 Binary files a/Models/SPUserManager.xcdatamodel/elements and b/Models/SPUserManager.xcdatamodel/elements differ diff --git a/Models/SPUserManager.xcdatamodel/layout b/Models/SPUserManager.xcdatamodel/layout index d177ace3..62662ba9 100644 Binary files a/Models/SPUserManager.xcdatamodel/layout and b/Models/SPUserManager.xcdatamodel/layout differ diff --git a/Source/SPDatabaseDocument.m b/Source/SPDatabaseDocument.m index f8b673ff..8286167a 100644 --- a/Source/SPDatabaseDocument.m +++ b/Source/SPDatabaseDocument.m @@ -2382,16 +2382,17 @@ static NSString *SPRenameDatabaseAction = @"SPRenameDatabase"; */ - (IBAction)showUserManager:(id)sender { - if (!userManagerInstance) - { - userManagerInstance = [[SPUserManager alloc] init]; + if (!userManagerInstance) + { + userManagerInstance = [[SPUserManager alloc] init]; - [userManagerInstance setConnection:mySQLConnection]; + [userManagerInstance setDatabaseDocument:self]; + [userManagerInstance setConnection:mySQLConnection]; [userManagerInstance setServerSupport:serverSupport]; - } - + } + // Before displaying the user manager make sure the current user has access to the mysql.user table. - SPMySQLResult *result = [mySQLConnection queryString:@"SELECT * FROM `mysql`.`user` ORDER BY `user`"]; + SPMySQLResult *result = [mySQLConnection queryString:@"SELECT user FROM mysql.user LIMIT 1"]; if ([mySQLConnection queryErrored] && ([result numberOfRows] == 0)) { @@ -2417,7 +2418,7 @@ static NSString *SPRenameDatabaseAction = @"SPRenameDatabase"; - (void)userManagerSheetDidEnd:(NSWindow *)sheet returnCode:(int)returnCode contextInfo:(void*)context { - [userManagerInstance release], userManagerInstance = nil; + [userManagerInstance release], userManagerInstance = nil; } /** diff --git a/Source/SPUserMO.m b/Source/SPUserMO.m index e02bb009..6e166700 100644 --- a/Source/SPUserMO.m +++ b/Source/SPUserMO.m @@ -46,7 +46,13 @@ static NSString *SPUserMOChildrenKey = @"children"; - (NSString *)displayName { - return ([self valueForKey:SPUserMOParentKey] == nil) ? self.user : self.host; + if ([self valueForKey:SPUserMOParentKey] == nil) { + return self.user; + } + if ([self.host length]) { + return self.host; + } + return @"%"; } - (void)setDisplayName:(NSString *)value diff --git a/Source/SPUserManager.h b/Source/SPUserManager.h index b156cd4c..caa12776 100644 --- a/Source/SPUserManager.h +++ b/Source/SPUserManager.h @@ -33,6 +33,7 @@ @class SPServerSupport; @class SPMySQLConnection; @class SPSplitView; +@class SPDatabaseDocument; @interface SPUserManager : NSWindowController { @@ -50,7 +51,6 @@ IBOutlet NSTreeController *treeController; IBOutlet NSMutableDictionary *privsSupportedByServer; - IBOutlet NSArrayController *schemaController; IBOutlet NSArrayController *grantedController; IBOutlet NSArrayController *availableController; @@ -82,6 +82,7 @@ } @property (nonatomic, retain) SPMySQLConnection *connection; +@property (nonatomic, assign) SPDatabaseDocument *databaseDocument; @property (nonatomic, retain) SPServerSupport *serverSupport; @property (nonatomic, retain) NSPersistentStoreCoordinator *persistentStoreCoordinator; @property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel; diff --git a/Source/SPUserManager.m b/Source/SPUserManager.m index eb69203a..388da2b1 100644 --- a/Source/SPUserManager.m +++ b/Source/SPUserManager.m @@ -38,6 +38,7 @@ #import "SPServerSupport.h" #import "SPAlertSheets.h" #import "SPSplitView.h" +#import "SPDatabaseDocument.h" #import #import @@ -56,7 +57,7 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn"; - (BOOL)_checkAndDisplayMySqlError; - (void)_clearData; - (void)_initializeChild:(NSManagedObject *)child withItem:(NSDictionary *)item; -- (void)_initializeSchemaPrivsForChild:(NSManagedObject *)child; +- (void)_initializeSchemaPrivsForChild:(NSManagedObject *)child fromData:(NSArray *)dataForUser; - (void)_initializeSchemaPrivs; - (NSArray *)_fetchPrivsWithUser:(NSString *)username schema:(NSString *)selectedSchema host:(NSString *)host; - (void)_setSchemaPrivValues:(NSArray *)objects enabled:(BOOL)enabled; @@ -68,6 +69,7 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn"; @implementation SPUserManager @synthesize connection; +@synthesize databaseDocument; @synthesize privsSupportedByServer; @synthesize managedObjectContext; @synthesize managedObjectModel; @@ -128,8 +130,9 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn"; [grantedTableView setDoubleAction:@selector(doubleClickSchemaPriv:)]; [availableTableView setDoubleAction:@selector(doubleClickSchemaPriv:)]; - [self _initializeUsers]; [self _initializeSchemaPrivs]; + [self _initializeUsers]; + [self _initializeAvailablePrivs]; treeSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"displayName" ascending:YES]; @@ -213,6 +216,28 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn"; */ - (void)_initializeTree:(NSArray *)items { + + // Retrieve all the user data in order to be able to initialise the schema privs for each child, + // copying into a dictionary keyed by user, each with all the host rows. + NSMutableDictionary *schemaPrivilegeData = [NSMutableDictionary dictionary]; + SPMySQLResult *queryResults = [[self connection] queryString:@"SELECT * FROM mysql.db"]; + [queryResults setReturnDataAsStrings:YES]; + for (NSDictionary *privRow in queryResults) { + if (![schemaPrivilegeData objectForKey:[privRow objectForKey:@"User"]]) { + [schemaPrivilegeData setObject:[NSMutableArray array] forKey:[privRow objectForKey:@"User"]]; + } + [[schemaPrivilegeData objectForKey:[privRow objectForKey:@"User"]] addObject:privRow]; + + // If "all database" values were found, add them to the schemas list if not already present + NSString *schemaName = [privRow objectForKey:@"Db"]; + if ([schemaName isEqualToString:@""] || [schemaName isEqualToString:@"%"]) { + if (![schemas containsObject:schemaName]) { + [schemas addObject:schemaName]; + [schemasTableView noteNumberOfRowsChanged]; + } + } + } + // Go through each item that contains a dictionary of key-value pairs // for each user currently in the database. for (NSUInteger i = 0; i < [items count]; i++) @@ -220,26 +245,20 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn"; NSString *username = [[items objectAtIndex:i] objectForKey:@"User"]; NSArray *parentResults = [[self _fetchUserWithUserName:username] retain]; NSDictionary *item = [items objectAtIndex:i]; + NSManagedObject *parent; + NSManagedObject *child; // Check to make sure if we already have added the parent if (parentResults != nil && [parentResults count] > 0) { // Add Children - NSManagedObject *parent = [parentResults objectAtIndex:0]; - NSManagedObject *child = [self _createNewSPUser]; - - // Setup the NSManagedObject with values from the dictionary - [self _initializeChild:child withItem:item]; - - NSMutableSet *children = [parent mutableSetValueForKey:@"children"]; - [children addObject:child]; - - [self _initializeSchemaPrivsForChild:child]; + parent = [parentResults objectAtIndex:0]; + child = [self _createNewSPUser]; } else { // Add Parent - NSManagedObject *parent = [self _createNewSPUser]; - NSManagedObject *child = [self _createNewSPUser]; + parent = [self _createNewSPUser]; + child = [self _createNewSPUser]; // We only care about setting the user and password keys on the parent, together with their // original values for comparison purposes @@ -247,14 +266,15 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn"; [parent setPrimitiveValue:username forKey:@"originaluser"]; [parent setPrimitiveValue:[item objectForKey:@"Password"] forKey:@"password"]; [parent setPrimitiveValue:[item objectForKey:@"Password"] forKey:@"originalpassword"]; - - [self _initializeChild:child withItem:item]; - - NSMutableSet *children = [parent mutableSetValueForKey:@"children"]; - [children addObject:child]; - - [self _initializeSchemaPrivsForChild:child]; } + + // Setup the NSManagedObject with values from the dictionary + [self _initializeChild:child withItem:item]; + + NSMutableSet *children = [parent mutableSetValueForKey:@"children"]; + [children addObject:child]; + + [self _initializeSchemaPrivsForChild:child fromData:[schemaPrivilegeData objectForKey:username]]; // Save the initialized objects so that any new changes will be tracked. NSError *error = nil; @@ -304,11 +324,9 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn"; { // Initialize Databases [schemas removeAllObjects]; - [schemas addObjectsFromArray:[[self connection] databases]]; - - [schemaController rearrangeObjects]; - - [self _initializeAvailablePrivs]; + [schemas addObjectsFromArray:[databaseDocument allDatabaseNames]]; + + [schemasTableView reloadData]; } /** @@ -352,24 +370,25 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn"; /** * Initialize the schema privileges for the supplied child object. + * + * Assumes that the child has already been initialized with values from the + * global user table. */ -- (void)_initializeSchemaPrivsForChild:(NSManagedObject *)child +- (void)_initializeSchemaPrivsForChild:(NSManagedObject *)child fromData:(NSArray *)dataForUser { - // Assumes that the child has already been initialized with values from the - // global user table. + NSMutableSet *privs = [child mutableSetValueForKey:@"schema_privileges"]; // Set an originalhost key on the child to allow the tracking of edits [child setPrimitiveValue:[child valueForKey:@"host"] forKey:@"originalhost"]; - - // Select rows from the db table that contains schema privs for each user/host - NSString *queryString = [NSString stringWithFormat:@"SELECT * FROM mysql.db WHERE user = %@ AND host = %@", - [[[child parent] valueForKey:@"user"] tickQuotedString], [[child valueForKey:@"host"] tickQuotedString]]; - - SPMySQLResult *queryResults = [[self connection] queryString:queryString]; - [queryResults setReturnDataAsStrings:YES]; - - for (NSDictionary *rowDict in queryResults) + + for (NSDictionary *rowDict in dataForUser) { + + // Verify that the host matches, or skip this entry + if (![[rowDict objectForKey:@"Host"] isEqualToString:[child valueForKey:@"host"]]) { + continue; + } + NSManagedObject *dbPriv = [NSEntityDescription insertNewObjectForEntityForName:@"Privileges" inManagedObjectContext:[self managedObjectContext]]; for (NSString *key in rowDict) @@ -386,15 +405,13 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn"; [dbPriv setValue:[NSNumber numberWithBool:boolValue] forKey:key]; } else if ([key isEqualToString:@"Db"]) { - [dbPriv setValue:[[rowDict objectForKey:key] stringByReplacingOccurrencesOfString:@"\\_" withString:@"_"] - forKey:key]; + NSString *db = [[rowDict objectForKey:key] stringByReplacingOccurrencesOfString:@"\\_" withString:@"_"]; + [dbPriv setValue:db forKey:key]; } else if (![key isEqualToString:@"Host"] && ![key isEqualToString:@"User"]) { [dbPriv setValue:[rowDict objectForKey:key] forKey:key]; } } - - NSMutableSet *privs = [child mutableSetValueForKey:@"schema_privileges"]; [privs addObject:dbPriv]; } } @@ -668,9 +685,10 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn"; NSArray *selectedObjects = [availableController selectedObjects]; [grantedController addObjects:selectedObjects]; - [grantedTableView reloadData]; + [grantedTableView noteNumberOfRowsChanged]; [availableController removeObjects:selectedObjects]; - [availableTableView reloadData]; + [availableTableView noteNumberOfRowsChanged]; + [schemasTableView setNeedsDisplay:YES]; [self _setSchemaPrivValues:selectedObjects enabled:YES]; } @@ -683,9 +701,10 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn"; NSArray *selectedObjects = [grantedController selectedObjects]; [availableController addObjects:selectedObjects]; - [availableTableView reloadData]; + [availableTableView noteNumberOfRowsChanged]; [grantedController removeObjects:selectedObjects]; - [grantedTableView reloadData]; + [grantedTableView noteNumberOfRowsChanged]; + [schemasTableView setNeedsDisplay:YES]; [self _setSchemaPrivValues:selectedObjects enabled:NO]; } @@ -772,7 +791,7 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn"; // The passed in objects should be an array of NSDictionaries with a key // of "name". NSManagedObject *selectedHost = [[treeController selectedObjects] objectAtIndex:0]; - NSString *selectedDb = [[schemaController selectedObjects] objectAtIndex:0]; + NSString *selectedDb = [schemas objectAtIndex:[schemasTableView selectedRow]]; NSArray *selectedPrivs = [self _fetchPrivsWithUser:[selectedHost valueForKeyPath:@"parent.user"] schema:[selectedDb stringByReplacingOccurrencesOfString:@"_" withString:@"\\_"] @@ -791,12 +810,12 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn"; isNew = YES; } - // Now setup all the items that are selected to YES + // Now setup all the items that are selected to their enabled value for (NSDictionary *obj in objects) { [priv setValue:[NSNumber numberWithBool:enabled] forKey:[obj valueForKey:@"name"]]; } - + if (isNew) { // Set up relationship NSMutableSet *privs = [selectedHost mutableSetValueForKey:@"schema_privileges"]; @@ -1229,10 +1248,26 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn"; - (NSArray *)_fetchPrivsWithUser:(NSString *)username schema:(NSString *)selectedSchema host:(NSString *)host { NSManagedObjectContext *moc = [self managedObjectContext]; - NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(user.parent.user like[cd] %@) AND (user.host like[cd] %@) AND (db like[cd] %@)", username, host, selectedSchema]; + NSPredicate *predicate; NSEntityDescription *privEntity = [NSEntityDescription entityForName:@"Privileges" inManagedObjectContext:moc]; NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease]; - + + // Construct the predicate depending on whether a user and schema were supplied; + // blank schemas indicate a default priv value (as per %) + if ([username length]) { + if ([selectedSchema length]) { + predicate = [NSPredicate predicateWithFormat:@"(user.parent.user like[cd] %@) AND (user.host like[cd] %@) AND (db like[cd] %@)", username, host, selectedSchema]; + } else { + predicate = [NSPredicate predicateWithFormat:@"(user.parent.user like[cd] %@) AND (user.host like[cd] %@) AND (db == '')", username, host]; + } + } else { + if ([selectedSchema length]) { + predicate = [NSPredicate predicateWithFormat:@"(user.parent.user == '') AND (user.host like[cd] %@) AND (db like[cd] %@)", host, selectedSchema]; + } else { + predicate = [NSPredicate predicateWithFormat:@"(user.parent.user == '') AND (user.host like[cd] %@) AND (db == '')", host]; + } + } + [request setEntity:privEntity]; [request setPredicate:predicate]; diff --git a/Source/SPUserManagerDataSource.h b/Source/SPUserManagerDataSource.h new file mode 100644 index 00000000..f60b2118 --- /dev/null +++ b/Source/SPUserManagerDataSource.h @@ -0,0 +1,37 @@ +// +// $Id$ +// +// SPUserManagerDataSource.h +// sequel-pro +// +// Created by Rowan Beentje on March 8, 2013. +// Copyright (c) 2013 Rowan Beentje. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, +// copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following +// conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. +// +// More info at + +#import "SPUserManager.h" + +@interface SPUserManager (SPUserManagerDataSource) + +@end diff --git a/Source/SPUserManagerDataSource.m b/Source/SPUserManagerDataSource.m new file mode 100644 index 00000000..4e7f622c --- /dev/null +++ b/Source/SPUserManagerDataSource.m @@ -0,0 +1,53 @@ +// +// $Id$ +// +// SPUserManagerDataSource.m +// sequel-pro +// +// Created by Rowan Beentje on March 8, 2013. +// Copyright (c) 2013 Rowan Beentje. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, +// copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following +// conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. +// +// More info at + +#import "SPUserManagerDataSource.h" + +@implementation SPUserManager (SPUserManagerDataSource) + +- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView +{ + return [schemas count]; +} + +- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex +{ + NSString *databaseName = [schemas objectAtIndex:rowIndex]; + if ([databaseName isEqualToString:@""]) { + databaseName = NSLocalizedString(@"All Databases", @"All databases placeholder"); + } else if ([databaseName isEqualToString:@"%"]) { + databaseName = NSLocalizedString(@"All Databases (%)", @"All databases (%) placeholder"); + } + return databaseName; +} + +@end diff --git a/Source/SPUserManagerDelegate.m b/Source/SPUserManagerDelegate.m index 8fa2b980..c00abba3 100644 --- a/Source/SPUserManagerDelegate.m +++ b/Source/SPUserManagerDelegate.m @@ -42,7 +42,6 @@ static NSString *SPSchemaPrivilegesTabIdentifier = @"Schema Privileges"; @interface SPUserManager (DeclaredAPI) -- (void)_initializeSchemaPrivs; - (void)_initializeAvailablePrivs; - (void)_selectParentFromSelection; - (void)_selectFirstChildOfParentNode; @@ -64,15 +63,15 @@ static NSString *SPSchemaPrivilegesTabIdentifier = @"Schema Privileges"; if (object == schemasTableView) { [grantedSchemaPrivs removeAllObjects]; [grantedTableView reloadData]; - + [self _initializeAvailablePrivs]; - - if ([[treeController selectedObjects] count] > 0 && [[schemaController selectedObjects] count] > 0) { + + if ([[treeController selectedObjects] count] > 0 && [[schemasTableView selectedRowIndexes] count] > 0) { NSManagedObject *user = [[treeController selectedObjects] objectAtIndex:0]; // Check to see if the user host node was selected if ([user valueForKey:@"host"]) { - NSString *selectedSchema = [[schemaController selectedObjects] objectAtIndex:0]; + NSString *selectedSchema = [schemas objectAtIndex:[schemasTableView selectedRow]]; NSArray *results = [self _fetchPrivsWithUser:[[user parent] valueForKey:@"user"] schema:[selectedSchema stringByReplacingOccurrencesOfString:@"_" withString:@"\\_"] @@ -116,6 +115,43 @@ static NSString *SPSchemaPrivilegesTabIdentifier = @"Schema Privileges"; } } +- (void)tableView:(NSTableView *)tableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)rowIndex +{ + if (tableView == schemasTableView) { + NSString *schemaName = [schemas objectAtIndex:rowIndex]; + + // Gray out the "all database" entries + if ([schemaName isEqualToString:@""] || [schemaName isEqualToString:@"%"]) { + [cell setTextColor:[NSColor lightGrayColor]]; + } else { + [cell setTextColor:[NSColor blackColor]]; + } + + // If the schema has permissions set, highlight with a yellow background + BOOL enabledPermissions = NO; + NSManagedObject *user = [[treeController selectedObjects] objectAtIndex:0]; + NSArray *results = [self _fetchPrivsWithUser:[[user parent] valueForKey:@"user"] + schema:[schemaName stringByReplacingOccurrencesOfString:@"_" withString:@"\\_"] + host:[user valueForKey:@"host"]]; + if ([results count]) { + NSManagedObject *schemaPrivs = [results objectAtIndex:0]; + for (NSString *itemKey in [[[schemaPrivs entity] attributesByName] allKeys]) { + if ([itemKey hasSuffix:@"_priv"] && [[schemaPrivs valueForKey:itemKey] boolValue]) { + enabledPermissions = YES; + break; + } + } + } + + if (enabledPermissions) { + [cell setDrawsBackground:YES]; + [cell setBackgroundColor:[NSColor colorWithDeviceRed:1.f green:1.f blue:0.f alpha:0.2]]; + } else { + [cell setDrawsBackground:NO]; + } + } +} + #pragma mark - #pragma mark Tab View Delegate methods @@ -191,13 +227,6 @@ static NSString *SPSchemaPrivilegesTabIdentifier = @"Schema Privileges"; } } -- (void)tabView:(NSTabView *)usersTabView willSelectTabViewItem:(NSTabViewItem *)tabViewItem -{ - if ([[tabViewItem identifier] isEqualToString:SPSchemaPrivilegesTabIdentifier]) { - [self _initializeSchemaPrivs]; - } -} - #pragma mark - #pragma mark Outline view Delegate Methods @@ -252,6 +281,7 @@ static NSString *SPSchemaPrivilegesTabIdentifier = @"Schema Privileges"; } [schemasTableView deselectAll:nil]; + [schemasTableView setNeedsDisplay:YES]; [grantedTableView deselectAll:nil]; [availableTableView deselectAll:nil]; } diff --git a/sequel-pro.xcodeproj/project.pbxproj b/sequel-pro.xcodeproj/project.pbxproj index 37cabecc..bafa1a82 100644 --- a/sequel-pro.xcodeproj/project.pbxproj +++ b/sequel-pro.xcodeproj/project.pbxproj @@ -330,6 +330,7 @@ 58CDB3400FCE13EF00F8ACA3 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B5EAC0FC0EC87FF900CC579C /* Security.framework */; }; 58CDB3410FCE141900F8ACA3 /* SequelProTunnelAssistant.m in Sources */ = {isa = PBXBuildFile; fileRef = 58CDB3310FCE139C00F8ACA3 /* SequelProTunnelAssistant.m */; }; 58CDB3420FCE142500F8ACA3 /* SPKeychain.m in Sources */ = {isa = PBXBuildFile; fileRef = 17E641740EF01F80001BC333 /* SPKeychain.m */; }; + 58D29FE016E96306002EB401 /* SPUserManagerDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 58D29FDF16E96306002EB401 /* SPUserManagerDataSource.m */; }; 58D2E229101222670063EF1D /* SPTextAndLinkCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 58D2E227101222670063EF1D /* SPTextAndLinkCell.m */; }; 58D2E22E101222870063EF1D /* link-arrow-clicked.png in Resources */ = {isa = PBXBuildFile; fileRef = 58D2E22B101222870063EF1D /* link-arrow-clicked.png */; }; 58D2E22F101222870063EF1D /* link-arrow-highlighted-clicked.png in Resources */ = {isa = PBXBuildFile; fileRef = 58D2E22C101222870063EF1D /* link-arrow-highlighted-clicked.png */; }; @@ -1080,6 +1081,8 @@ 58CDB32F0FCE138D00F8ACA3 /* SPSSHTunnel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SPSSHTunnel.m; sourceTree = ""; }; 58CDB3310FCE139C00F8ACA3 /* SequelProTunnelAssistant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SequelProTunnelAssistant.m; sourceTree = ""; }; 58CDB3360FCE13C900F8ACA3 /* SequelProTunnelAssistant */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = SequelProTunnelAssistant; sourceTree = BUILT_PRODUCTS_DIR; }; + 58D29FDE16E96306002EB401 /* SPUserManagerDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPUserManagerDataSource.h; sourceTree = ""; }; + 58D29FDF16E96306002EB401 /* SPUserManagerDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SPUserManagerDataSource.m; sourceTree = ""; }; 58D2E227101222670063EF1D /* SPTextAndLinkCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SPTextAndLinkCell.m; sourceTree = ""; }; 58D2E228101222670063EF1D /* SPTextAndLinkCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPTextAndLinkCell.h; sourceTree = ""; }; 58D2E22B101222870063EF1D /* link-arrow-clicked.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "link-arrow-clicked.png"; sourceTree = ""; }; @@ -1447,6 +1450,8 @@ 4D90B799101E0CDF00D116A1 /* SPUserManager.m */, 17381854151FB34E0078FFE2 /* SPUserManagerDelegate.h */, 17381855151FB34E0078FFE2 /* SPUserManagerDelegate.m */, + 58D29FDE16E96306002EB401 /* SPUserManagerDataSource.h */, + 58D29FDF16E96306002EB401 /* SPUserManagerDataSource.m */, ); name = "User Manager"; sourceTree = ""; @@ -3237,6 +3242,7 @@ 171B374115DA654300EBC7AB /* SPTableContentFilter.m in Sources */, 5843E247162B555B00EAA6D1 /* SPThreadAdditions.m in Sources */, 17005CB316D6CF0000AF81F4 /* SPTableTriggersDelegate.m in Sources */, + 58D29FE016E96306002EB401 /* SPUserManagerDataSource.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; -- cgit v1.2.3