* Replaced the nested export form with a scrollable layout.
* Made the table selection checkboxes directly visible.
* Preserved the Select All and Select None buttons.
* Kept the view selection controls.
* Cleared stale table selections when switching databases.
* Added automatic database loading when the application opens.
* Preserved the existing SQL editor and administration functionality.
This commit is contained in:
Mark Gregory
2026-10-16 21:51:45 +01:00
parent 86df4fb185
commit 819e5cf46e
20 changed files with 263 additions and 150 deletions
@@ -7,7 +7,7 @@
"key": "MySQL Workbench",
"location": {
"startingColumn": 18,
"startingLine": 93
"startingLine": 98
}
},
{
@@ -15,7 +15,7 @@
"key": "Navigator",
"location": {
"startingColumn": 20,
"startingLine": 182
"startingLine": 187
}
},
{
@@ -23,7 +23,7 @@
"key": "Administration",
"location": {
"startingColumn": 22,
"startingLine": 183
"startingLine": 188
}
},
{
@@ -31,7 +31,7 @@
"key": "Schemas",
"location": {
"startingColumn": 22,
"startingLine": 184
"startingLine": 189
}
},
{
@@ -39,7 +39,7 @@
"key": "SCHEMAS",
"location": {
"startingColumn": 22,
"startingLine": 204
"startingLine": 209
}
},
{
@@ -47,7 +47,7 @@
"key": "Edit Connection",
"location": {
"startingColumn": 36,
"startingLine": 258
"startingLine": 263
}
},
{
@@ -55,7 +55,7 @@
"key": "Set as Default Schema",
"location": {
"startingColumn": 24,
"startingLine": 375
"startingLine": 380
}
},
{
@@ -63,7 +63,7 @@
"key": "Refresh Tables",
"location": {
"startingColumn": 24,
"startingLine": 379
"startingLine": 384
}
},
{
@@ -71,7 +71,7 @@
"key": "Load Tables",
"location": {
"startingColumn": 28,
"startingLine": 449
"startingLine": 454
}
},
{
@@ -79,7 +79,7 @@
"key": "Tables",
"location": {
"startingColumn": 22,
"startingLine": 422
"startingLine": 427
}
},
{
@@ -87,7 +87,7 @@
"key": "Select First 100 Rows",
"location": {
"startingColumn": 20,
"startingLine": 505
"startingLine": 510
}
},
{
@@ -95,7 +95,7 @@
"key": "New Query Tab",
"location": {
"startingColumn": 19,
"startingLine": 626
"startingLine": 631
}
},
{
@@ -103,7 +103,7 @@
"key": "Default Schema:",
"location": {
"startingColumn": 18,
"startingLine": 651
"startingLine": 656
}
},
{
@@ -111,7 +111,7 @@
"key": "SQL Editor",
"location": {
"startingColumn": 18,
"startingLine": 661
"startingLine": 666
}
},
{
@@ -119,7 +119,7 @@
"key": "Execute SQL",
"location": {
"startingColumn": 19,
"startingLine": 639
"startingLine": 644
}
},
{
@@ -127,7 +127,7 @@
"key": "Format SQL",
"location": {
"startingColumn": 19,
"startingLine": 646
"startingLine": 651
}
},
{
@@ -135,7 +135,7 @@
"key": "%lld",
"location": {
"startingColumn": 26,
"startingLine": 701
"startingLine": 706
}
},
{
@@ -143,7 +143,7 @@
"key": "Result Grid",
"location": {
"startingColumn": 22,
"startingLine": 733
"startingLine": 738
}
},
{
@@ -151,7 +151,7 @@
"key": "No query results",
"location": {
"startingColumn": 26,
"startingLine": 751
"startingLine": 756
}
},
{
@@ -159,7 +159,7 @@
"key": "Action Output",
"location": {
"startingColumn": 22,
"startingLine": 773
"startingLine": 778
}
},
{
@@ -167,7 +167,7 @@
"key": "UTF-8",
"location": {
"startingColumn": 18,
"startingLine": 848
"startingLine": 853
}
},
{
@@ -175,7 +175,7 @@
"key": "Connection Settings",
"location": {
"startingColumn": 18,
"startingLine": 1023
"startingLine": 1028
}
},
{
@@ -183,7 +183,7 @@
"key": "Connection Name",
"location": {
"startingColumn": 21,
"startingLine": 1028
"startingLine": 1033
}
},
{
@@ -191,7 +191,7 @@
"key": "Hostname",
"location": {
"startingColumn": 21,
"startingLine": 1033
"startingLine": 1038
}
},
{
@@ -199,7 +199,7 @@
"key": "Port",
"location": {
"startingColumn": 21,
"startingLine": 1038
"startingLine": 1043
}
},
{
@@ -207,7 +207,7 @@
"key": "Username",
"location": {
"startingColumn": 21,
"startingLine": 1044
"startingLine": 1049
}
},
{
@@ -215,7 +215,7 @@
"key": "Password (macOS Keychain)",
"location": {
"startingColumn": 21,
"startingLine": 1049
"startingLine": 1054
}
},
{
@@ -223,7 +223,7 @@
"key": "Default Schema",
"location": {
"startingColumn": 21,
"startingLine": 1054
"startingLine": 1059
}
},
{
@@ -231,7 +231,7 @@
"key": "Cancel",
"location": {
"startingColumn": 24,
"startingLine": 1062
"startingLine": 1067
}
},
{
@@ -239,7 +239,7 @@
"key": "Save",
"location": {
"startingColumn": 24,
"startingLine": 1066
"startingLine": 1071
}
},
{
@@ -247,7 +247,7 @@
"key": "The server did not return any columns.",
"location": {
"startingColumn": 25,
"startingLine": 1388
"startingLine": 1393
}
},
{
@@ -255,7 +255,7 @@
"key": "Loading %@…",
"location": {
"startingColumn": 30,
"startingLine": 1366
"startingLine": 1371
}
},
{
@@ -263,7 +263,7 @@
"key": "No Data",
"location": {
"startingColumn": 21,
"startingLine": 1385
"startingLine": 1390
}
},
{
@@ -271,7 +271,7 @@
"key": "Unable to Load %@",
"location": {
"startingColumn": 25,
"startingLine": 1372
"startingLine": 1377
}
},
{
@@ -279,7 +279,7 @@
"key": "Retry",
"location": {
"startingColumn": 28,
"startingLine": 1378
"startingLine": 1383
}
},
{
@@ -287,7 +287,7 @@
"key": "Refresh",
"location": {
"startingColumn": 23,
"startingLine": 1427
"startingLine": 1432
}
},
{
@@ -295,7 +295,7 @@
"key": "SQL Editor",
"location": {
"startingColumn": 23,
"startingLine": 1434
"startingLine": 1439
}
},
{
@@ -303,7 +303,7 @@
"key": "Not loaded",
"location": {
"startingColumn": 22,
"startingLine": 1512
"startingLine": 1517
}
},
{
@@ -311,7 +311,7 @@
"key": "Updated %@",
"location": {
"startingColumn": 21,
"startingLine": 1509
"startingLine": 1514
}
},
{
@@ -319,7 +319,7 @@
"key": "%lld rows",
"location": {
"startingColumn": 18,
"startingLine": 1517
"startingLine": 1522
}
},
{
@@ -327,7 +327,7 @@
"key": "Import SQL into %@?",
"location": {
"startingColumn": 13,
"startingLine": 1725
"startingLine": 1766
}
},
{
@@ -335,7 +335,7 @@
"key": "Operation",
"location": {
"startingColumn": 20,
"startingLine": 1589
"startingLine": 1597
}
},
{
@@ -343,7 +343,7 @@
"key": "Data Export",
"location": {
"startingColumn": 22,
"startingLine": 1590
"startingLine": 1598
}
},
{
@@ -351,39 +351,39 @@
"key": "Data Import / Restore",
"location": {
"startingColumn": 22,
"startingLine": 1591
"startingLine": 1599
}
},
{
"comment": "",
"key": "MySQL Connection",
"location": {
"startingColumn": 25,
"startingLine": 1597
"startingColumn": 26,
"startingLine": 1606
}
},
{
"comment": "",
"key": "Export Options",
"location": {
"startingColumn": 29,
"startingLine": 1619
"startingColumn": 30,
"startingLine": 1630
}
},
{
"comment": "",
"key": "Import Options",
"location": {
"startingColumn": 29,
"startingLine": 1651
"startingColumn": 30,
"startingLine": 1682
}
},
{
"comment": "",
"key": "Progress",
"location": {
"startingColumn": 25,
"startingLine": 1661
"startingColumn": 26,
"startingLine": 1694
}
},
{
@@ -391,7 +391,7 @@
"key": "Connection",
"location": {
"startingColumn": 36,
"startingLine": 1598
"startingLine": 1608
}
},
{
@@ -399,7 +399,7 @@
"key": "Database",
"location": {
"startingColumn": 28,
"startingLine": 1602
"startingLine": 1612
}
},
{
@@ -407,7 +407,7 @@
"key": "Select Database",
"location": {
"startingColumn": 30,
"startingLine": 1603
"startingLine": 1613
}
},
{
@@ -415,15 +415,23 @@
"key": "Refresh Databases",
"location": {
"startingColumn": 32,
"startingLine": 1611
"startingLine": 1621
}
},
{
"comment": "",
"key": "Exports base tables with batched INSERT statements. Views, triggers, routines and transaction-consistent snapshots are not included.",
"key": "No tables found. Select a database or refresh the list.",
"location": {
"startingColumn": 34,
"startingLine": 1648
}
},
{
"comment": "",
"key": "Exports base tables and selected views. Triggers, routines, consistent snapshots and guaranteed row ordering are not yet supported.",
"location": {
"startingColumn": 30,
"startingLine": 1647
"startingLine": 1677
}
},
{
@@ -431,7 +439,7 @@
"key": "Table structure",
"location": {
"startingColumn": 32,
"startingLine": 1620
"startingLine": 1632
}
},
{
@@ -439,7 +447,7 @@
"key": "Table data",
"location": {
"startingColumn": 32,
"startingLine": 1621
"startingLine": 1633
}
},
{
@@ -447,7 +455,15 @@
"key": "Add DROP TABLE IF EXISTS",
"location": {
"startingColumn": 32,
"startingLine": 1622
"startingLine": 1634
}
},
{
"comment": "",
"key": "Include views (definitions)",
"location": {
"startingColumn": 32,
"startingLine": 1636
}
},
{
@@ -455,7 +471,7 @@
"key": "Loading tables…",
"location": {
"startingColumn": 57,
"startingLine": 1632
"startingLine": 1646
}
},
{
@@ -463,7 +479,7 @@
"key": "Tables (%lld selected)",
"location": {
"startingColumn": 34,
"startingLine": 1625
"startingLine": 1639
}
},
{
@@ -471,7 +487,7 @@
"key": "All",
"location": {
"startingColumn": 36,
"startingLine": 1627
"startingLine": 1641
}
},
{
@@ -479,7 +495,7 @@
"key": "None",
"location": {
"startingColumn": 36,
"startingLine": 1628
"startingLine": 1642
}
},
{
@@ -487,7 +503,31 @@
"key": "Refresh",
"location": {
"startingColumn": 36,
"startingLine": 1629
"startingLine": 1643
}
},
{
"comment": "",
"key": "Views (%lld selected)",
"location": {
"startingColumn": 38,
"startingLine": 1662
}
},
{
"comment": "",
"key": "All",
"location": {
"startingColumn": 40,
"startingLine": 1664
}
},
{
"comment": "",
"key": "None",
"location": {
"startingColumn": 40,
"startingLine": 1665
}
},
{
@@ -495,7 +535,7 @@
"key": "Import SQL statements into the selected database.",
"location": {
"startingColumn": 30,
"startingLine": 1652
"startingLine": 1684
}
},
{
@@ -503,7 +543,7 @@
"key": "Supports ordinary SQL statements. Dumps using custom DELIMITER directives or stored routines are not supported yet.",
"location": {
"startingColumn": 30,
"startingLine": 1655
"startingLine": 1687
}
},
{
@@ -511,7 +551,7 @@
"key": "Close",
"location": {
"startingColumn": 24,
"startingLine": 1676
"startingLine": 1713
}
},
{
@@ -519,7 +559,7 @@
"key": "Cancel",
"location": {
"startingColumn": 28,
"startingLine": 1684
"startingLine": 1721
}
},
{
@@ -527,7 +567,7 @@
"key": "Export SQL…",
"location": {
"startingColumn": 31,
"startingLine": 1691
"startingLine": 1728
}
},
{
@@ -535,7 +575,7 @@
"key": "Import SQL…",
"location": {
"startingColumn": 31,
"startingLine": 1692
"startingLine": 1729
}
},
{
@@ -543,7 +583,7 @@
"key": "Import SQL",
"location": {
"startingColumn": 20,
"startingLine": 1728
"startingLine": 1769
}
},
{
@@ -551,7 +591,7 @@
"key": "Cancel",
"location": {
"startingColumn": 20,
"startingLine": 1736
"startingLine": 1777
}
},
{
@@ -559,7 +599,7 @@
"key": "SQL files can modify or delete existing database objects and data. Ensure you have a backup before continuing.",
"location": {
"startingColumn": 17,
"startingLine": 1741
"startingLine": 1782
}
},
{
@@ -567,7 +607,7 @@
"key": "Database Import / Export",
"location": {
"startingColumn": 22,
"startingLine": 1753
"startingLine": 1794
}
},
{
@@ -575,7 +615,7 @@
"key": "Built-in native MySQL database tools",
"location": {
"startingColumn": 22,
"startingLine": 1756
"startingLine": 1797
}
}
]
@@ -7,3 +7,5 @@
/Volumes/Developer/Applications/WorkbenchReplacement/build/Build/Products/Debug/WorkbenchReplacement.app
/Volumes/Developer/Applications/WorkbenchReplacement/build/Build/Products/Debug/WorkbenchReplacement.app
/Volumes/Developer/Applications/WorkbenchReplacement/build/Build/Products/Debug/WorkbenchReplacement.app
/Volumes/Developer/Applications/WorkbenchReplacement/build/Build/Products/Debug/WorkbenchReplacement.app
/Volumes/Developer/Applications/WorkbenchReplacement/build/Build/Products/Debug/WorkbenchReplacement.app
@@ -19,7 +19,7 @@
<dict>
<key>cdhash</key>
<data>
kACWojMyCPE6G6Uw22tGzRrP2x4=
Iv3+eGn5ABjizzuIQDv3FNnVrWE=
</data>
<key>requirement</key>
<string>identifier "WorkbenchReplacement.debug" and anchor apple generic and certificate leaf[subject.CN] = "Apple Development: Mark Gregory (FLBRJ3BYDD)" and certificate 1[field.1.2.840.113635.100.6.2.1] /* exists */</string>
+47 -47
View File
@@ -48,7 +48,7 @@
<key>uniqueIdentifier</key>
<string>087CD1E0-7E94-4934-A62E-C6C070CD1577</string>
</dict>
<key>AD44F407-7FE5-46AE-A82F-8FAC1CA2720B</key>
<key>20B4B0A0-41A0-44A0-BA02-3E5707BABE60</key>
<dict>
<key>className</key>
<string>IDECommandLineBuildLog</string>
@@ -57,7 +57,7 @@
<key>domainType</key>
<string>Xcode.IDEActivityLogDomainType.BuildLog</string>
<key>fileName</key>
<string>AD44F407-7FE5-46AE-A82F-8FAC1CA2720B.xcactivitylog</string>
<string>20B4B0A0-41A0-44A0-BA02-3E5707BABE60.xcactivitylog</string>
<key>hasPrimaryLog</key>
<true/>
<key>primaryObservable</key>
@@ -82,13 +82,55 @@
<key>signature</key>
<string>Building project WorkbenchReplacement with scheme WorkbenchReplacement and configuration Debug</string>
<key>timeStartedRecording</key>
<real>813875703.86912405</real>
<real>813876442.84578598</real>
<key>timeStoppedRecording</key>
<real>813875715.47182798</real>
<real>813876454.95874095</real>
<key>title</key>
<string>Building project WorkbenchReplacement with scheme WorkbenchReplacement and configuration Debug</string>
<key>uniqueIdentifier</key>
<string>AD44F407-7FE5-46AE-A82F-8FAC1CA2720B</string>
<string>20B4B0A0-41A0-44A0-BA02-3E5707BABE60</string>
</dict>
<key>705B952B-2A37-40D9-B731-8E2290C15462</key>
<dict>
<key>className</key>
<string>IDECommandLineBuildLog</string>
<key>documentTypeString</key>
<string>&lt;nil&gt;</string>
<key>domainType</key>
<string>Xcode.IDEActivityLogDomainType.BuildLog</string>
<key>fileName</key>
<string>705B952B-2A37-40D9-B731-8E2290C15462.xcactivitylog</string>
<key>hasPrimaryLog</key>
<true/>
<key>primaryObservable</key>
<dict>
<key>highLevelStatus</key>
<string>S</string>
<key>totalNumberOfAnalyzerIssues</key>
<integer>0</integer>
<key>totalNumberOfErrors</key>
<integer>0</integer>
<key>totalNumberOfTestFailures</key>
<integer>0</integer>
<key>totalNumberOfWarnings</key>
<integer>0</integer>
</dict>
<key>schemeIdentifier-containerName</key>
<string>WorkbenchReplacement project</string>
<key>schemeIdentifier-schemeName</key>
<string>WorkbenchReplacement</string>
<key>schemeIdentifier-sharedScheme</key>
<integer>1</integer>
<key>signature</key>
<string>Building project WorkbenchReplacement with scheme WorkbenchReplacement and configuration Debug</string>
<key>timeStartedRecording</key>
<real>813876591.82079995</real>
<key>timeStoppedRecording</key>
<real>813876604.10285401</real>
<key>title</key>
<string>Building project WorkbenchReplacement with scheme WorkbenchReplacement and configuration Debug</string>
<key>uniqueIdentifier</key>
<string>705B952B-2A37-40D9-B731-8E2290C15462</string>
</dict>
<key>AF582207-87B3-4A2E-A532-DA0FD8F61FBD</key>
<dict>
@@ -132,48 +174,6 @@
<key>uniqueIdentifier</key>
<string>AF582207-87B3-4A2E-A532-DA0FD8F61FBD</string>
</dict>
<key>BA4E5983-8DAA-49CA-A677-11E73E67F0B0</key>
<dict>
<key>className</key>
<string>IDECommandLineBuildLog</string>
<key>documentTypeString</key>
<string>&lt;nil&gt;</string>
<key>domainType</key>
<string>Xcode.IDEActivityLogDomainType.BuildLog</string>
<key>fileName</key>
<string>BA4E5983-8DAA-49CA-A677-11E73E67F0B0.xcactivitylog</string>
<key>hasPrimaryLog</key>
<true/>
<key>primaryObservable</key>
<dict>
<key>highLevelStatus</key>
<string>S</string>
<key>totalNumberOfAnalyzerIssues</key>
<integer>0</integer>
<key>totalNumberOfErrors</key>
<integer>0</integer>
<key>totalNumberOfTestFailures</key>
<integer>0</integer>
<key>totalNumberOfWarnings</key>
<integer>0</integer>
</dict>
<key>schemeIdentifier-containerName</key>
<string>WorkbenchReplacement project</string>
<key>schemeIdentifier-schemeName</key>
<string>WorkbenchReplacement</string>
<key>schemeIdentifier-sharedScheme</key>
<integer>1</integer>
<key>signature</key>
<string>Building project WorkbenchReplacement with scheme WorkbenchReplacement and configuration Debug</string>
<key>timeStartedRecording</key>
<real>813875867.553792</real>
<key>timeStoppedRecording</key>
<real>813875879.94755697</real>
<key>title</key>
<string>Building project WorkbenchReplacement with scheme WorkbenchReplacement and configuration Debug</string>
<key>uniqueIdentifier</key>
<string>BA4E5983-8DAA-49CA-A677-11E73E67F0B0</string>
</dict>
</dict>
</dict>
</plist>
@@ -1 +1 @@
1792183470.9957151: Module build session file for module cache at Path(str: "/Volumes/Developer/Applications/WorkbenchReplacement/build/ModuleCache.noindex")
1792183792.223736: Module build session file for module cache at Path(str: "/Volumes/Developer/Applications/WorkbenchReplacement/build/ModuleCache.noindex")
+1 -1
View File
@@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>LastAccessedDate</key>
<date>2026-10-16T20:44:30Z</date>
<date>2026-10-16T20:49:52Z</date>
<key>WorkspacePath</key>
<string>/Volumes/Developer/Applications/WorkbenchReplacement/WorkbenchReplacement.xcodeproj</string>
</dict>