From 8af7ab7046ab834bc392a0eb31128c7d0647fd53 Mon Sep 17 00:00:00 2001 From: stuconnolly Date: Wed, 9 Jun 2010 23:13:28 +0000 Subject: Exporter enhancements, including: - Move the custom filename options view to a drop down view on the main exporter dialog. - Change the export data source matrix to a popup button. - Fix the export button being enabled when no tables are selected to be exported. - Various interface validation fixes. --- Interfaces/English.lproj/DBView.xib | 255 ++---- Interfaces/English.lproj/ExportDialog.xib | 1369 ++++++++++++++--------------- Source/SPConstants.h | 6 +- Source/SPExportController.h | 15 +- Source/SPExportController.m | 300 +++++-- Source/SPExportInitializer.m | 15 +- Source/SPTableContent.m | 1 + 7 files changed, 964 insertions(+), 997 deletions(-) diff --git a/Interfaces/English.lproj/DBView.xib b/Interfaces/English.lproj/DBView.xib index e5ea3b1a..6e749548 100644 --- a/Interfaces/English.lproj/DBView.xib +++ b/Interfaces/English.lproj/DBView.xib @@ -27,8 +27,8 @@ YES com.brandonwalkin.BWToolkit - com.apple.InterfaceBuilder.CocoaPlugin com.apple.WebKitIBPlugin + com.apple.InterfaceBuilder.CocoaPlugin YES @@ -226,7 +226,7 @@ controlColor 3 - MC42NjY2NjY2NjY3AA + MC42NjY2NjY2ODY1AA @@ -6921,7 +6921,7 @@ View - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} {213, 107} @@ -7201,7 +7201,7 @@ {{0, 0}, {1440, 878}} {213, 129} - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} 1 @@ -7213,7 +7213,7 @@ View - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} {213, 107} @@ -7369,7 +7369,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {{0, 0}, {1440, 878}} {213, 129} - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} 7 @@ -7379,7 +7379,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 Reset Auto Increment NSWindow - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} {255, 95} @@ -7542,7 +7542,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {{0, 0}, {1280, 1002}} {255, 117} - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} 1 @@ -7552,7 +7552,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 New Relation NSPanel - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} 256 @@ -8153,7 +8153,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {302, 307} {{0, 0}, {1440, 878}} - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} 9 @@ -8163,7 +8163,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 New Trigger NSPanel - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} {329, 348} @@ -8570,7 +8570,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {{0, 0}, {1680, 1028}} {329, 370} - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} 3 @@ -8582,7 +8582,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 View - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} {213, 50} @@ -8702,7 +8702,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {{0, 0}, {1920, 1178}} {213, 72} - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} 9 @@ -8714,7 +8714,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 View - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} {213, 107} @@ -8849,7 +8849,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {{0, 0}, {1440, 878}} {213, 129} - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} 15 @@ -8861,7 +8861,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 View - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} {350, 200} @@ -9084,7 +9084,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {{0, 0}, {1680, 1028}} {350, 222} - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} 9 @@ -9096,7 +9096,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 View - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} {213, 107} @@ -9266,7 +9266,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {{0, 0}, {1440, 878}} {213, 129} - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} 31 @@ -9276,7 +9276,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 MySQL Help NSPanel - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} {351, 120} @@ -9670,7 +9670,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {{0, 0}, {1280, 1002}} {351, 136} - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} MYSQL_HELP_WINDOW @@ -9804,7 +9804,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 Secure Text Input Sheet NSPanel - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} 256 @@ -9908,7 +9908,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {338, 138} {{0, 0}, {1280, 778}} - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} @@ -11801,7 +11801,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 disabledControlTextColor 3 - MC4zMzMzMzMzMzMzAA + MC4zMzMzMzMzNDMzAA @@ -16932,6 +16932,14 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 7070 + + + tableContentInstance + + + + 7071 + @@ -27488,7 +27496,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 - 7070 + 7071 @@ -27725,10 +27733,10 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 - NSDictionary + NSApplication IBProjectSource - Source/NSDictionary_DeepMutableCopy.h + Frameworks/PSMTabBar/PSMTabDragAssistant.h @@ -27753,6 +27761,20 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 Frameworks/MCPKit/MCPFoundationKit/MCPNull.h + + NSObject + + IBProjectSource + Frameworks/PSMTabBar/PSMTabBarCell.h + + + + NSObject + + IBProjectSource + Frameworks/PSMTabBar/PSMTabBarControl.h + + NSObject @@ -28054,7 +28076,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 titleAccessoryView titleImageView titleStringView - userManagerInstance YES @@ -28126,7 +28147,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 id id id - SPUserManager @@ -28178,7 +28198,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 switchInput: switchTab: toggleAdvancedExportOptionsView: - toggleCustomFilenameFormat: + toggleCustomFilenameFormatView: toggleSQLIncludeContent: toggleSQLIncludeDropSyntax: toggleSQLIncludeStructure: @@ -28217,17 +28237,17 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 exportCSVLinesTerminatedField exportCSVNULLValuesAsTextField exportCompressOutputFile - exportCustomFilenameButton - exportCustomFilenameExampleTextField exportCustomFilenameTokenField exportCustomFilenameTokensField exportCustomFilenameView + exportCustomFilenameViewButton + exportCustomFilenameViewLabelButton exportDeselectAllTablesButton exportExcelSheetOrFilePerTableMatrix exportFilePerTableCheck - exportFilePerTableNote + exportFilenameDividerBox exportHTMLIncludeStructureCheck - exportInputMatrix + exportInputPopUpButton exportPDFIncludeStructureCheck exportPathField exportProcessLowMemoryButton @@ -28248,6 +28268,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 exportTablelistScrollView exportToolbar exportUseUTF8BOMButton + exportXMLNULLValuesAsTextField tableContentInstance tableDataInstance tableDocumentInstance @@ -28269,18 +28290,18 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 NSComboBox NSTextField NSButton - NSButton - NSTextField NSTokenField NSTokenField NSView NSButton - NSMatrix NSButton - NSTextField NSButton NSMatrix NSButton + NSBox + NSButton + NSPopUpButton + NSButton NSTextField NSButton NSProgressIndicator @@ -28300,6 +28321,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 NSScrollView NSToolbar NSButton + NSTextField id id id @@ -29041,82 +29063,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 - - SPUserManager - NSWindowController - - YES - - YES - addHost: - addSchemaPriv: - addUser: - checkAllPrivileges: - doApply: - doCancel: - refresh: - removeHost: - removeSchemaPriv: - removeUser: - uncheckAllPrivileges: - - - YES - id - id - id - id - id - id - id - id - id - id - id - - - - YES - - YES - addSchemaPrivButton - availableController - availableTableView - grantedController - grantedTableView - outlineView - privsSupportedByServer - removeSchemaPrivButton - schemaController - schemasTableView - splitViewButtonBar - tabView - treeController - userNameTextField - - - YES - NSButton - NSArrayController - NSTableView - NSArrayController - NSTableView - NSOutlineView - NSMutableDictionary - NSButton - NSArrayController - NSTableView - BWAnchoredButtonBar - NSTabView - NSTreeController - NSTextField - - - - IBProjectSource - Source/SPUserManager.h - - TableDump NSObject @@ -29406,14 +29352,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 BWToolkitFramework.framework/Headers/NSApplication+BWAdditions.h - - NSArrayController - NSObjectController - - IBFrameworkSource - AppKit.framework/Headers/NSArrayController.h - - NSBox NSView @@ -29478,28 +29416,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 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 @@ -29556,15 +29472,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 AppKit.framework/Headers/NSMenuItemCell.h - - NSMutableDictionary - NSDictionary - - - - NSMutableDictionary - - NSNumberFormatter NSFormatter @@ -29644,7 +29551,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 NSObject - + IBFrameworkSource AppKit.framework/Headers/NSOutlineView.h @@ -29707,11 +29614,17 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 NSObject - + + IBFrameworkSource + Foundation.framework/Headers/NSFileManager.h + NSObject - + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueCoding.h + NSObject @@ -29832,6 +29745,13 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 PSMTabBar.framework/Headers/PSMTabBarControl.h + + NSObject + + IBFrameworkSource + Print.framework/Headers/PDEPluginInterface.h + + NSObject @@ -29916,19 +29836,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 WebKit.framework/Headers/WebUIDelegate.h - - NSObjectController - NSController - - IBFrameworkSource - AppKit.framework/Headers/NSObjectController.h - - - - NSOutlineView - NSTableView - - NSPanel NSWindow @@ -30138,14 +30045,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 AppKit.framework/Headers/NSToolbar.h - - NSTreeController - NSObjectController - - IBFrameworkSource - AppKit.framework/Headers/NSTreeController.h - - NSUserDefaultsController NSController diff --git a/Interfaces/English.lproj/ExportDialog.xib b/Interfaces/English.lproj/ExportDialog.xib index 82c6e212..4b4a3909 100644 --- a/Interfaces/English.lproj/ExportDialog.xib +++ b/Interfaces/English.lproj/ExportDialog.xib @@ -21,7 +21,7 @@ YES - + YES @@ -51,7 +51,7 @@ 4111 2 - {{610, 309}, {450, 462}} + {{610, 324}, {450, 447}} 611845120 Export NSWindow @@ -183,7 +183,7 @@ {3.40282e+38, 3.40282e+38} - {450, 462} + {450, 447} 256 @@ -202,13 +202,13 @@ 4352 - {179, 212} + {199, 212} YES 256 - {179, 17} + {199, 17} @@ -222,7 +222,7 @@ YES tables - 122 + 142 10 1000 @@ -409,7 +409,7 @@ 0 - {{1, 17}, {179, 212}} + {{1, 17}, {199, 212}} @@ -443,7 +443,7 @@ YES - {{1, 0}, {179, 17}} + {{1, 0}, {199, 17}} @@ -452,7 +452,7 @@ - {{40, 102}, {181, 230}} + {{20, 113}, {201, 230}} 530 @@ -463,240 +463,10 @@ QSAAAEEgAABBmAAAQZgAAA - - - 268 - {{20, 338}, {104, 64}} - - YES - 3 - 1 - - YES - - 67239424 - 131072 - Filtered Results - - - 1 - 1211912703 - 0 - - NSRadioButton - - - - 200 - 25 - - - 67239424 - 131072 - Query Results - - - 2 - 1211912703 - 0 - - 549453824 - {18, 18} - - YES - - YES - - - - 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 -ZSwgSW5jLiwgMjAwOQA - - - - - - 3 - MCAwAA - - - - 400 - 75 - - - -2080244224 - 131072 - Selected Tables - - - 3 - 1211912703 - 0 - - 549453824 - {14, 15} - - YES - - YES - - - - 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 - - - - - - - - 400 - 75 - - - {104, 20} - {4, 2} - 1151868928 - NSActionCell - - 67239424 - 131072 - Radio - - 1211912703 - 0 - - 549453824 - {18, 18} - - YES - - YES - - - - TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw -IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ -29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5 -dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA -AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG -AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/ -0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/ -7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/ -5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/ -3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD -AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns -AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/ -6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/ -/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/ -///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl -YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA -AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD -AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu -AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB -AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES -AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS -AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - - - - - - - - 400 - 75 - - 2 - - - 6 - System - controlColor - - - - - LucidaGrande - 13 - 1044 - - 17 - {{225, 76}, {209, 259}} + {{225, 87}, {209, 259}} YES @@ -741,7 +511,12 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA Include: - + + 6 + System + controlColor + + @@ -926,7 +701,9 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 1 1211912703 0 - + + NSRadioButton + 200 @@ -1031,7 +808,10 @@ QXBwbGUgQ29tcHV0ZXIsIEluYy4sIDIwMDUAAAAAA - + + 3 + MCAwAA + 400 @@ -1097,7 +877,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - + + LucidaGrande + 13 + 1044 + @@ -1823,7 +1607,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 289 - {{340, 12}, {96, 32}} + {{340, 23}, {96, 32}} 1 YES @@ -1844,7 +1628,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 289 - {{248, 12}, {96, 32}} + {{248, 23}, {96, 32}} YES @@ -1879,7 +1663,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 292 - {{10, 12}, {230, 18}} + {{15, 12}, {230, 18}} YES @@ -1899,11 +1683,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - {{1, 1}, {394, 40}} + {{1, 1}, {414, 40}} - {{-3, -4}, {396, 42}} + {{-3, -4}, {416, 42}} {0, 0} @@ -1926,13 +1710,13 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 - {{-103, 10}, {100, 18}} + {{-83, 10}, {100, 18}} YES 67239424 131072 - LOW_PRIORITY + 1211912703 @@ -1946,14 +1730,14 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - {{40, 9}, {390, 36}} + {{20, 20}, {410, 36}} NSView -2147483380 - {{226, 386}, {116, 18}} + {{226, 350}, {116, 18}} YES @@ -1972,26 +1756,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 25 - - - -2147483380 - {{246, 341}, {187, 42}} - - YES - - 67239424 - 272760832 - This creates a new file for each table. The file names match the table names. - - - - - - 268 - {{17, 428}, {31, 14}} + {{17, 413}, {31, 14}} YES @@ -2007,7 +1775,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 266 - {{53, 426}, {285, 19}} + {{53, 411}, {285, 19}} YES @@ -2024,7 +1792,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 10 - {{20, 415}, {410, 5}} + {{20, 374}, {410, 5}} {0, 0} @@ -2046,7 +1814,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 265 - {{341, 420}, {94, 28}} + {{341, 406}, {94, 28}} YES @@ -2071,7 +1839,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 289 - {{118, 0}, {32, 24}} + {{138, 0}, {32, 24}} YES @@ -2095,7 +1863,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 289 - {{149, 0}, {32, 24}} + {{169, 0}, {32, 24}} 1 YES @@ -2142,7 +1910,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - {{40, 79}, {181, 24}} + {{20, 90}, {201, 24}} NO NO @@ -2152,7 +1920,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 292 - {{30, 45}, {29, 26}} + {{9, 56}, {29, 26}} YES @@ -2173,7 +1941,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 292 - {{53, 46}, {56, 22}} + {{32, 57}, {56, 22}} YES @@ -2195,146 +1963,259 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 75 - - {450, 462} - - - {{0, 0}, {1680, 1028}} - {450, 539} - {3.40282e+38, 3.40282e+38} - SPExportWindow - - - - 299 - - YES - - - 268 - {{18, 134}, {184, 18}} - - YES - - 67239424 - 0 - Custom Filename Format: - - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 266 - {{17, 20}, {390, 14}} - - YES - - 68288064 - 272761856 - Example: - - - - - - - - - 10 - - YES - - - 256 - - YES - - - 258 - {{4, 7}, {383, 22}} - - YES - - -1540227519 - 4199424 - host,database,table,date,time - - - - + + + 268 + {{9, 380}, {29, 26}} + + YES + + 67239424 + 167772160 + + + + -1195491073 + 69 + + + + 400 + 75 + + + + + 268 + {{32, 378}, {400, 28}} + + YES + + -2080244224 + 33685504 + Customize Filename + + + -2046410497 + 1 + + + + 400 + 75 + + + + + -2147483380 + + YES + + + 34 + + YES + + + 256 + + YES + + + 266 + {{29, 59}, {411, 19}} + + YES + + -1804468671 + 272761856 + + + + YES + + + + + + + 268 + {{26, 86}, {318, 14}} + + YES + + 68288064 + 272761856 + Type or drag the tokens to customize the filename format. + + + + + + + + + 10 + + YES + + + 256 + + YES + + + 258 + {{21, 4}, {383, 22}} + + YES + + -2077098431 + 4330496 + host,database,table,date,time + + + + + + + + {{1, 1}, {415, 38}} + + + + {{26, 10}, {417, 40}} + + {0, 0} + + 67239424 + 0 + Box + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + + 1 + 0 + 0 + NO + + + {{1, 1}, {468, 112}} + + + + {{-11, -4}, {470, 114}} + + {0, 0} + + 67239424 + 0 + Box + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + 1 + 0 + 0 + NO - {{1, 1}, {388, 38}} - + {{0, 269}, {450, 108}} + + NSView - {{17, 60}, {390, 40}} - - {0, 0} - - 67239424 - 0 - Box - - - - 3 - MCAwLjgwMDAwMDAxMTkAA + + + 268 + {{17, 347}, {207, 22}} + + YES + + -2076049856 + 133120 + + + 109199615 + 129 + + + 400 + 75 + + + Selected Tables + + 1048576 + 2147483647 + 1 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + Filtered Results + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Query Results + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + YES + + + 2 + 1 + YES + YES + 2 - - 1 - 0 - 0 - NO - - - - 268 - {{17, 42}, {226, 14}} - - YES - - 68288064 - 272761856 - Drag the tokens to customize the format. - - - - - - - - - 266 - {{20, 106}, {384, 22}} - - YES - - -1267597759 - 272630784 - - - - YES - - - + {450, 447} + - {424, 164} - NSCustomView - NSResponder + {{0, 0}, {1680, 1028}} + {450, 524} + {3.40282e+38, 3.40282e+38} + SPExportWindow 3 @@ -2707,22 +2588,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 245 - - - switchInput: - - - - 246 - - - - exportInputMatrix - - - - 247 - exportFilePerTableCheck @@ -2731,14 +2596,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 248 - - - exportFilePerTableNote - - - - 249 - exportSQLIncludeDropSyntaxCheck @@ -3075,30 +2932,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 415 - - - exportCustomFilenameView - - - - 417 - - - - exportCustomFilenameTokenField - - - - 419 - - - - exportCustomFilenameTokensField - - - - 420 - exportSQLIncludeContentCheck @@ -3181,75 +3014,131 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - exportCustomFilenameExampleTextField + exportSQLBLOBFieldsAsHexCheck + + + + 484 + + + + exportCSVNULLValuesAsTextField - + - 464 + 485 - - toggleCustomFilenameFormat: + + exportUseUTF8BOMButton + + + + 486 + + + + exportCompressOutputFile + + + + 487 + + + + exportXMLNULLValuesAsTextField + + + + 496 + + + + exportCustomFilenameViewButton - + - 467 + 522 + + + + exportCustomFilenameViewLabelButton + + + + 523 delegate - + - 468 + 535 - - exportCustomFilenameButton + + toggleCustomFilenameFormatView: - + - 469 + 537 + + + + toggleCustomFilenameFormatView: + + + + 538 - exportSQLBLOBFieldsAsHexCheck + exportCustomFilenameTokenField - + - 484 + 541 - exportCSVNULLValuesAsTextField + exportCustomFilenameTokensField - + - 485 + 542 - exportUseUTF8BOMButton + exportFilenameDividerBox - + - 486 + 543 - exportCompressOutputFile + exportCustomFilenameView - + - 487 + 545 + + + + switchInput: + + + + 552 - exportXMLNULLValuesAsTextField + exportInputPopUpButton - + - 496 + 553 @@ -3296,8 +3185,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA YES - - @@ -3310,6 +3197,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA + + + + @@ -3381,60 +3272,14 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - 14 - - - YES - - - - - - 15 - - - YES - - - - - - 16 - + 14 + YES - - - - + - - 17 - - - - - 18 - - - - - 19 - - - - - 20 - - - - - 21 - - - 22 @@ -3939,71 +3784,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - - 97 - - - YES - - - - - - - - Token Name View - - - 180 - - - YES - - - - - - 162 - - - YES - - - - - - 179 - - - YES - - - - - - 130 - - - YES - - - - - - 131 - - - - - 163 - - - - - 181 - - - 285 @@ -4440,34 +4220,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - - 462 - - - YES - - - - - - 463 - - - - - 465 - - - YES - - - - - - 466 - - - 472 @@ -4580,6 +4332,149 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA + + 500 + + + YES + + + + + + 501 + + + YES + + + + + + 502 + + + + + 503 + + + + + 524 + + + YES + + + + + + 525 + + + YES + + + + + + + + 526 + + + YES + + + + + + 528 + + + YES + + + + + + 529 + + + YES + + + + + + 530 + + + + + 531 + + + YES + + + + + + 532 + + + + + 534 + + + + + 546 + + + YES + + + + + + 547 + + + YES + + + + + + 548 + + + YES + + + + + + + + 549 + + + + + 550 + + + + + 551 + + + @@ -4600,27 +4495,9 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 12.IBPluginDependency 13.IBAttributePlaceholdersKey 13.IBPluginDependency - 130.CustomClassName - 130.IBAttributePlaceholdersKey - 130.IBPluginDependency - 130.ImportedFromIB2 - 131.IBPluginDependency 14.IBPluginDependency - 15.IBPluginDependency - 16.IBPluginDependency - 162.IBPluginDependency - 163.IBPluginDependency - 17.IBPluginDependency - 179.IBPluginDependency - 18.IBPluginDependency - 180.CustomClassName - 180.IBPluginDependency - 181.IBPluginDependency - 19.IBPluginDependency 2.IBPluginDependency 2.IBUserGuides - 20.IBPluginDependency - 21.IBPluginDependency 22.IBPluginDependency 23.IBPluginDependency 24.IBPluginDependency @@ -4733,10 +4610,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 459.IBPluginDependency 46.IBPluginDependency 460.IBPluginDependency - 462.IBPluginDependency - 463.IBPluginDependency - 465.IBPluginDependency - 466.IBPluginDependency 47.IBPluginDependency 47.ImportedFromIB2 472.IBPluginDependency @@ -4761,17 +4634,42 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 495.IBPluginDependency 50.IBPluginDependency 50.ImportedFromIB2 + 500.IBAttributePlaceholdersKey + 500.IBPluginDependency + 501.IBPluginDependency + 502.IBPluginDependency + 503.IBPluginDependency 51.IBPluginDependency 52.IBPluginDependency 52.ImportedFromIB2 + 524.IBPluginDependency + 525.IBPluginDependency + 526.IBPluginDependency + 528.IBPluginDependency + 529.CustomClassName + 529.IBPluginDependency 53.IBPluginDependency 53.ImportedFromIB2 + 530.IBPluginDependency + 531.CustomClassName + 531.IBAttributePlaceholdersKey + 531.IBPluginDependency + 531.ImportedFromIB2 + 532.IBPluginDependency + 534.IBPluginDependency 54.IBAttributePlaceholdersKey 54.IBPluginDependency 54.ImportedFromIB2 + 546.IBPluginDependency + 547.IBPluginDependency + 548.IBEditorWindowLastContentRect + 548.IBPluginDependency + 549.IBPluginDependency 55.IBAttributePlaceholdersKey 55.IBPluginDependency 55.ImportedFromIB2 + 550.IBPluginDependency + 551.IBPluginDependency 56.IBAttributePlaceholdersKey 56.IBPluginDependency 56.ImportedFromIB2 @@ -4815,21 +4713,18 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 91.IBPluginDependency 93.IBPluginDependency 94.IBPluginDependency - 97.IBEditorWindowLastContentRect - 97.IBPluginDependency - 97.ImportedFromIB2 YES com.apple.InterfaceBuilder.CocoaPlugin - {{507, 135}, {450, 462}} + {{568, 226}, {450, 447}} com.apple.InterfaceBuilder.CocoaPlugin - {{507, 135}, {450, 462}} + {{568, 226}, {450, 447}} - {450, 462} + {450, 447} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -4842,28 +4737,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaPlugin - NSTokenField - - YES - - - YES - - - 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 - NSTokenField - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -4884,8 +4757,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin {{523, 449}, {379, 139}} com.apple.InterfaceBuilder.CocoaPlugin {{523, 449}, {379, 139}} @@ -4902,7 +4773,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaPlugin - {{424, 597}, {616, 0}} + {{485, 673}, {616, 0}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -5012,10 +4883,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 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 @@ -5046,11 +4913,42 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + Customize filename + + + 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 + NSTokenField + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + NSTokenField + + YES + + + YES + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin ToolTip @@ -5061,6 +4959,11 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{574, 541}, {207, 54}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin ToolTip @@ -5071,6 +4974,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin ToolTip @@ -5121,9 +5026,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{424, 446}, {424, 164}} - com.apple.InterfaceBuilder.CocoaPlugin - @@ -5142,11 +5044,18 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - 496 + 553 YES + + NSApplication + + IBProjectSource + Frameworks/PSMTabBar/PSMTabDragAssistant.h + + NSObject @@ -5161,6 +5070,20 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA Frameworks/MCPKit/MCPFoundationKit/MCPNull.h + + NSObject + + IBProjectSource + Frameworks/PSMTabBar/PSMTabBarCell.h + + + + NSObject + + IBProjectSource + Frameworks/PSMTabBar/PSMTabBarControl.h + + NSObject @@ -5292,7 +5215,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA switchInput: switchTab: toggleAdvancedExportOptionsView: - toggleCustomFilenameFormat: + toggleCustomFilenameFormatView: toggleSQLIncludeContent: toggleSQLIncludeDropSyntax: toggleSQLIncludeStructure: @@ -5331,17 +5254,17 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA exportCSVLinesTerminatedField exportCSVNULLValuesAsTextField exportCompressOutputFile - exportCustomFilenameButton - exportCustomFilenameExampleTextField exportCustomFilenameTokenField exportCustomFilenameTokensField exportCustomFilenameView + exportCustomFilenameViewButton + exportCustomFilenameViewLabelButton exportDeselectAllTablesButton exportExcelSheetOrFilePerTableMatrix exportFilePerTableCheck - exportFilePerTableNote + exportFilenameDividerBox exportHTMLIncludeStructureCheck - exportInputMatrix + exportInputPopUpButton exportPDFIncludeStructureCheck exportPathField exportProcessLowMemoryButton @@ -5384,18 +5307,18 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA NSComboBox NSTextField NSButton - NSButton - NSTextField NSTokenField NSTokenField NSView NSButton - NSMatrix NSButton - NSTextField NSButton NSMatrix NSButton + NSBox + NSButton + NSPopUpButton + NSButton NSTextField NSButton NSProgressIndicator @@ -5643,6 +5566,22 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA AppKit.framework/Headers/NSMenu.h + + NSMenuItem + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenuItem.h + + + + NSMenuItemCell + NSButtonCell + + IBFrameworkSource + AppKit.framework/Headers/NSMenuItemCell.h + + NSObject @@ -5908,6 +5847,13 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA PSMTabBar.framework/Headers/PSMTabBarControl.h + + NSObject + + IBFrameworkSource + Print.framework/Headers/PDEPluginInterface.h + + NSObject @@ -6000,6 +5946,22 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA AppKit.framework/Headers/NSPanel.h + + NSPopUpButton + NSButton + + IBFrameworkSource + AppKit.framework/Headers/NSPopUpButton.h + + + + NSPopUpButtonCell + NSMenuItemCell + + IBFrameworkSource + AppKit.framework/Headers/NSPopUpButtonCell.h + + NSProgressIndicator NSView @@ -6138,10 +6100,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA NSView - - IBFrameworkSource - AppKit.framework/Headers/NSMenuItem.h - + NSView @@ -6227,6 +6186,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA YES NSApplicationIcon + NSMenuCheckmark + NSMenuMixedState NSRefreshTemplate NSSwitch selectall @@ -6238,6 +6199,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA YES {128, 128} + {9, 8} + {7, 2} {10, 12} {15, 15} {14, 17} diff --git a/Source/SPConstants.h b/Source/SPConstants.h index 10fd430f..5b37e5fb 100644 --- a/Source/SPConstants.h +++ b/Source/SPConstants.h @@ -65,9 +65,9 @@ typedef NSUInteger SPExportType; // Export source constants enum { - SPFilteredExport = 1, - SPQueryExport = 2, - SPTableExport = 3 + SPFilteredExport = 0, + SPQueryExport = 1, + SPTableExport = 2 }; typedef NSUInteger SPExportSource; diff --git a/Source/SPExportController.h b/Source/SPExportController.h index 7788ef0e..476ffda4 100644 --- a/Source/SPExportController.h +++ b/Source/SPExportController.h @@ -51,13 +51,13 @@ IBOutlet NSTextField *exportPathField; IBOutlet NSTableView *exportTableList; IBOutlet NSTabView *exportTabBar; - IBOutlet NSMatrix *exportInputMatrix; + IBOutlet NSPopUpButton *exportInputPopUpButton; IBOutlet NSButton *exportFilePerTableCheck; - IBOutlet NSTextField *exportFilePerTableNote; IBOutlet NSButton *exportSelectAllTablesButton; IBOutlet NSButton *exportDeselectAllTablesButton; IBOutlet NSButton *exportRefreshTablesButton; IBOutlet NSScrollView *exportTablelistScrollView; + IBOutlet NSBox *exportFilenameDividerBox; // Errors sheet IBOutlet NSWindow *errorsWindow; @@ -80,11 +80,11 @@ IBOutlet NSProgressIndicator *exportProgressIndicator; // Custom filename view + IBOutlet NSButton *exportCustomFilenameViewButton; + IBOutlet NSButton *exportCustomFilenameViewLabelButton; IBOutlet NSView *exportCustomFilenameView; - IBOutlet NSButton *exportCustomFilenameButton; IBOutlet NSTokenField *exportCustomFilenameTokenField; IBOutlet NSTokenField *exportCustomFilenameTokensField; - IBOutlet NSTextField *exportCustomFilenameExampleTextField; // SQL IBOutlet NSButton *exportSQLIncludeStructureCheck; @@ -193,6 +193,11 @@ */ BOOL showAdvancedView; + /** + * Display custom filename view flag. + */ + BOOL showCustomFilenameView; + /** * User defaults */ @@ -252,7 +257,7 @@ - (IBAction)changeExportOutputPath:(id)sender; - (IBAction)refreshTableList:(id)sender; - (IBAction)selectDeselectAllTables:(id)sender; -- (IBAction)toggleCustomFilenameFormat:(id)sender; +- (IBAction)toggleCustomFilenameFormatView:(id)sender; - (IBAction)toggleAdvancedExportOptionsView:(id)sender; - (IBAction)toggleSQLIncludeStructure:(id)sender; diff --git a/Source/SPExportController.m b/Source/SPExportController.m index 42d8982c..bdd5f0e0 100644 --- a/Source/SPExportController.m +++ b/Source/SPExportController.m @@ -37,10 +37,15 @@ @interface SPExportController (PrivateAPI) +- (void)_updateDisplayedExportFilename; +- (NSString *)_generateDefaultExportFilename; + - (void)_toggleExportButton:(id)uiStateDict; - (void)_toggleExportButtonOnBackgroundThread; - (void)_toggleExportButtonWithBool:(NSNumber *)enable; -- (void)_resizeWindowByHeightDelta:(NSInteger)delta; + +- (void)_resizeWindowForCustomFilenameViewByHeightDelta:(NSInteger)delta; +- (void)_resizeWindowForAdvancedOptionsViewByHeightDelta:(NSInteger)delta; @end @@ -63,7 +68,8 @@ [self setExportCancelled:NO]; [self setExportToMultipleFiles:YES]; - exportType = 0; + exportType = SPSQLExport; + exportSource = SPTableExport; exportTableCount = 0; currentTableExportIndex = 0; @@ -79,6 +85,7 @@ operationQueue = [[NSOperationQueue alloc] init]; showAdvancedView = NO; + showCustomFilenameView = NO; heightOffset = 0; windowMinWidth = [[self window] minSize].width; @@ -105,7 +112,7 @@ [exportToolbar setSelectedItemIdentifier:[currentToolbarItem itemIdentifier]]; // Select the 'selected tables' option - [exportInputMatrix selectCellAtRow:2 column:0]; + [exportInputPopUpButton selectItemAtIndex:SPTableExport]; } #pragma mark - @@ -116,7 +123,7 @@ */ - (void)export { - [self exportTables:nil asFormat:0]; + [self exportTables:nil asFormat:SPSQLExport]; } /** @@ -124,17 +131,21 @@ */ - (void)exportTables:(NSArray *)exportTables asFormat:(SPExportType)format { + // Set the default export filename + [self _updateDisplayedExportFilename]; + [self refreshTableList:self]; if ([exportFiles count] > 0) [exportFiles removeAllObjects]; + + // Select the correct tab according to the supplied export type + [exportToolbar setSelectedItemIdentifier:[[[exportToolbar items] objectAtIndex:(format - 1)] itemIdentifier]]; + + // Select the 'selected tables' source option + [exportInputPopUpButton selectItemAtIndex:SPTableExport]; - if (exportTables && format) { - - // Select the correct tab according to the supplied export type - [exportToolbar setSelectedItemIdentifier:[[[exportToolbar items] objectAtIndex:(format - 1)] itemIdentifier]]; - - // Select the 'selected tables' source option - [exportInputMatrix selectCellAtRow:2 column:0]; + // If tables were supplied, select them + if (exportTables) { // Disable all tables for (NSMutableArray *table in tables) @@ -158,11 +169,11 @@ } [exportTableList reloadData]; - - // Ensure interface validation - [self switchTab:[[exportToolbar items] objectAtIndex:(format - 1)]]; } + // Ensure interface validation + [self switchTab:[[exportToolbar items] objectAtIndex:(format - 1)]]; + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDesktopDirectory, NSUserDomainMask, YES); // If found the set the default path to the user's desktop, otherwise use their home directory @@ -272,7 +283,13 @@ [exportAdvancedOptionsView setHidden:YES]; [exportAdvancedOptionsViewButton setState:NSOffState]; - [self _resizeWindowByHeightDelta:0]; + // Close the customize filename view if it's open + [exportCustomFilenameView setHidden:YES]; + [exportCustomFilenameViewButton setState:NSOffState]; + + // If open close the advanced options view and custom filename view + [self _resizeWindowForAdvancedOptionsViewByHeightDelta:0]; + [self _resizeWindowForCustomFilenameViewByHeightDelta:0]; } [NSApp endSheet:[sender window] returnCode:[sender tag]]; @@ -283,44 +300,44 @@ * Change the selected toolbar item. */ - (IBAction)switchTab:(id)sender -{ +{ if ([sender isKindOfClass:[NSToolbarItem class]]) { currentToolbarItem = sender; + // Determine what data to use (filtered result, custom query result or selected table(s)) for the export operation + exportSource = (exportType == SPDotExport) ? SPTableExport : [exportInputPopUpButton indexOfSelectedItem]; + + // Determine the export type + exportType = [sender tag]; + NSString *label = [[currentToolbarItem label] uppercaseString]; [exportTabBar selectTabViewItemWithIdentifier:[label lowercaseString]]; - BOOL isSQL = [label isEqualToString:@"SQL"]; - BOOL isCSV = [label isEqualToString:@"CSV"]; - BOOL isXML = [label isEqualToString:@"XML"]; - BOOL isHTML = [label isEqualToString:@"HTML"]; - BOOL isPDF = [label isEqualToString:@"PDF"]; - BOOL isDot = [label isEqualToString:@"DOT"]; - + BOOL isSQL = (exportType == SPSQLExport); + BOOL isCSV = (exportType == SPCSVExport); + BOOL isXML = (exportType == SPXMLExport); + BOOL isHTML = (exportType == SPHTMLExport); + BOOL isPDF = (exportType == SPPDFExport); + BOOL isDot = (exportType == SPDotExport); + BOOL disable = (isCSV || isXML || isHTML || isPDF || isDot); - [exportFilePerTableCheck setHidden:(isSQL || isDot)]; - [exportFilePerTableNote setHidden:(isSQL || isDot)]; - + [exportFilePerTableCheck setHidden:(isSQL || isDot)]; [exportTableList setEnabled:(!isDot)]; [exportSelectAllTablesButton setEnabled:(!isDot)]; [exportDeselectAllTablesButton setEnabled:(!isDot)]; [exportRefreshTablesButton setEnabled:(!isDot)]; - [[exportInputMatrix cellAtRow:2 column:0] setEnabled:(!isDot)]; + [[[exportInputPopUpButton menu] itemAtIndex:SPTableExport] setEnabled:(!isDot)]; - if (isDot) { - // Disable all source checkboxes - [[exportInputMatrix cellAtRow:0 column:0] setEnabled:NO]; - [[exportInputMatrix cellAtRow:1 column:0] setEnabled:NO]; - } - else { - // Enable/disable the 'filtered result' and 'query result' options - [[exportInputMatrix cellAtRow:0 column:0] setEnabled:((disable) && ([[tableContentInstance currentResult] count] > 1))]; - [[exportInputMatrix cellAtRow:1 column:0] setEnabled:((disable) && ([[customQueryInstance currentResult] count] > 1))]; - } + [exportInputPopUpButton setEnabled:(!isDot)]; + + // Enable/disable the 'filtered result' and 'query result' options + // Note that the result count check is always greater than one as the first row is always the field names + [[[exportInputPopUpButton menu] itemAtIndex:SPFilteredExport] setEnabled:((!disable) && ([[tableContentInstance currentResult] count] > 1))]; + [[[exportInputPopUpButton menu] itemAtIndex:SPQueryExport] setEnabled:((!disable) && ([[customQueryInstance currentResult] count] > 1))]; [[exportTableList tableColumnWithIdentifier:@"structure"] setHidden:(isSQL) ? (![exportSQLIncludeStructureCheck state]) : disable]; [[exportTableList tableColumnWithIdentifier:@"drop"] setHidden:(isSQL) ? (![exportSQLIncludeDropSyntaxCheck state]) : disable]; @@ -329,6 +346,8 @@ [exportCSVNULLValuesAsTextField setStringValue:[prefs stringForKey:SPNullValue]]; [exportXMLNULLValuesAsTextField setStringValue:[prefs stringForKey:SPNullValue]]; + + if (!showCustomFilenameView) [self _updateDisplayedExportFilename]; } } @@ -337,19 +356,19 @@ */ - (IBAction)switchInput:(id)sender { - if ([sender isKindOfClass:[NSMatrix class]]) { - - BOOL isSelectedTables = ([[sender selectedCell] tag] == SPTableExport); - - [exportFilePerTableCheck setHidden:(!isSelectedTables)]; - [exportFilePerTableNote setHidden:(!isSelectedTables)]; + if ([sender isKindOfClass:[NSPopUpButton class]]) { + BOOL isSelectedTables = ([sender indexOfSelectedItem] == SPTableExport); + + [exportFilePerTableCheck setHidden:(!isSelectedTables) || (exportType == SPSQLExport)]; [exportTableList setEnabled:isSelectedTables]; [exportSelectAllTablesButton setEnabled:isSelectedTables]; [exportDeselectAllTablesButton setEnabled:isSelectedTables]; [exportRefreshTablesButton setEnabled:isSelectedTables]; - availableFilenameTokens = ([[sender selectedCell] tag] == SPQueryExport) ? @"host,database,date,time" : @"host,database,table,date,time"; + availableFilenameTokens = ([sender indexOfSelectedItem] == SPQueryExport) ? @"host,database,date,time" : @"host,database,table,date,time"; + + [self _updateDisplayedExportFilename]; } } @@ -401,7 +420,6 @@ [panel setCanChooseFiles:NO]; [panel setCanChooseDirectories:YES]; [panel setCanCreateDirectories:YES]; - [panel setAccessoryView:exportCustomFilenameView]; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDesktopDirectory, NSUserDomainMask, YES); @@ -481,8 +499,9 @@ for (NSToolbarItem *item in [exportToolbar items]) { if ([[item itemIdentifier] isEqualToString:[exportToolbar selectedItemIdentifier]] && [item tag] == SPSQLExport) { - if ([exportSQLIncludeStructureCheck state] == NSOnState) toggleStructure = YES; - if ([exportSQLIncludeDropSyntaxCheck state] == NSOnState) toggleDropTable = YES; + if ([exportSQLIncludeStructureCheck state]) toggleStructure = YES; + if ([exportSQLIncludeDropSyntaxCheck state]) toggleDropTable = YES; + break; } } @@ -490,7 +509,9 @@ for (NSMutableArray *table in tables) { if (toggleStructure) [table replaceObjectAtIndex:1 withObject:[NSNumber numberWithBool:[sender tag]]]; + [table replaceObjectAtIndex:2 withObject:[NSNumber numberWithBool:[sender tag]]]; + if (toggleDropTable) [table replaceObjectAtIndex:3 withObject:[NSNumber numberWithBool:[sender tag]]]; } @@ -502,10 +523,23 @@ /** * Toggles the state of the custom filename format token fields. */ -- (IBAction)toggleCustomFilenameFormat:(id)sender +- (IBAction)toggleCustomFilenameFormatView:(id)sender { - [exportCustomFilenameTokenField setEnabled:[sender state]]; - [exportCustomFilenameTokensField setEnabled:[sender state]]; + showCustomFilenameView = (!showCustomFilenameView); + + [exportCustomFilenameViewButton setState:showCustomFilenameView]; + [exportFilenameDividerBox setHidden:showCustomFilenameView]; + [exportCustomFilenameView setHidden:(!showCustomFilenameView)]; + + [self _resizeWindowForCustomFilenameViewByHeightDelta:(showCustomFilenameView) ? [exportCustomFilenameView frame].size.height : 0]; + + // On close update the displayed filename + if (!showCustomFilenameView) { + [self _updateDisplayedExportFilename]; + } + else { + [exportCustomFilenameViewLabelButton setTitle:NSLocalizedString(@"Customize Filename", @"default customize file name label")]; + } } /** @@ -513,18 +547,12 @@ */ - (IBAction)toggleAdvancedExportOptionsView:(id)sender { - showAdvancedView = !showAdvancedView; + showAdvancedView = (!showAdvancedView); - if (showAdvancedView) { - [exportAdvancedOptionsViewButton setState:NSOnState]; - [self _resizeWindowByHeightDelta:([exportAdvancedOptionsView frame].size.height + 10)]; - [exportAdvancedOptionsView setHidden:NO]; - } - else { - [exportAdvancedOptionsViewButton setState:NSOffState]; - [self _resizeWindowByHeightDelta:0]; - [exportAdvancedOptionsView setHidden:YES]; - } + [exportAdvancedOptionsViewButton setState:showAdvancedView]; + [exportAdvancedOptionsView setHidden:(!showAdvancedView)]; + + [self _resizeWindowForAdvancedOptionsViewByHeightDelta:(showAdvancedView) ? ([exportAdvancedOptionsView frame].size.height + 10) : 0]; } /** @@ -610,20 +638,6 @@ return items; } -#pragma mark - -#pragma mark Text field delegate methods - -- (void)controlTextDidChange:(NSNotification *)notification -{ - if ([notification object] == exportCustomFilenameTokenField) { - - // Create the table name, but since this is only an example, use the first table in the list - NSString *filename = [self expandCustomFilenameFormatFromString:[exportCustomFilenameTokenField stringValue] usingTableName:[[tablesListInstance tables] objectAtIndex:1]]; - - [exportCustomFilenameExampleTextField setStringValue:[NSString stringWithFormat:@"%@: %@", NSLocalizedString(@"Example", @"example label"), filename]]; - } -} - #pragma mark - #pragma mark Other @@ -671,6 +685,53 @@ #pragma mark - #pragma mark Private API +/** + * Updates the displayed export filename, either custom or default. + */ +- (void)_updateDisplayedExportFilename +{ + NSString *filename = ([[exportCustomFilenameTokenField stringValue] length] > 0) ? [self expandCustomFilenameFormatFromString:[exportCustomFilenameTokenField stringValue] usingTableName:[[tablesListInstance tables] objectAtIndex:1]] : [self _generateDefaultExportFilename]; + + [exportCustomFilenameViewLabelButton setTitle:[NSString stringWithFormat:NSLocalizedString(@"Customize Filename (%@)", @"customize file name label"), filename]]; +} + +/** + * Generates the default export filename based on the selected export options. + */ +- (NSString *)_generateDefaultExportFilename +{ + NSString *filename = @""; + NSString *extension = @""; + + // Determine what the file name should be + switch (exportSource) + { + case SPFilteredExport: + filename = [NSString stringWithFormat:@"%@_view", [tableDocumentInstance table]]; + break; + case SPQueryExport: + filename = @"query_result"; + break; + case SPTableExport: + filename = [tableDocumentInstance database]; + break; + } + + switch (exportType) { + case SPSQLExport: + extension = ([exportCompressOutputFile state]) ? @"sql.gz" : @"sql"; + break; + case SPXMLExport: + extension = @"xml"; + break; + case SPDotExport: + extension = @"dot"; + break; + } + + return ([extension length] > 0) ? [filename stringByAppendingPathExtension:extension] : filename; +} + /** * Enables or disables the export button based on the state of various interface controls. */ @@ -678,16 +739,20 @@ { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - BOOL enable; - NSString *format = [uiStateDict objectForKey:@"ExportFormat"]; + BOOL enable = NO; + + BOOL isSQL = (exportType == SPSQLExport); + BOOL isCSV = (exportType == SPCSVExport); + BOOL isXML = (exportType == SPXMLExport); + BOOL isHTML = (exportType == SPHTMLExport); + BOOL isPDF = (exportType == SPPDFExport); + BOOL isDot = (exportType == SPDotExport); - BOOL isSQL = [format isEqualToString:@"SQL"]; - BOOL isCSV = [format isEqualToString:@"CSV"]; - BOOL isXML = [format isEqualToString:@"XML"]; - BOOL isHTML = [format isEqualToString:@"HTML"]; - BOOL isPDF = [format isEqualToString:@"PDF"]; + BOOL structureEnabled = [[uiStateDict objectForKey:@"SQLExportStructureEnabled"] integerValue]; + BOOL contentEnabled = [[uiStateDict objectForKey:@"SQLExportContentEnabled"] integerValue]; + BOOL dropEnabled = [[uiStateDict objectForKey:@"SQLExportDropEnabled"] integerValue]; - if (isCSV || isXML || isHTML || isPDF) { + if (isCSV || isXML || isHTML || isPDF || (isSQL && ((!structureEnabled) || (!dropEnabled)))) { enable = NO; // Only enable the button if at least one table is selected @@ -700,38 +765,33 @@ } } else if (isSQL) { - BOOL structureEnabled = [[uiStateDict objectForKey:@"SQLExportStructureEnabled"] integerValue]; - BOOL contentEnabled = [[uiStateDict objectForKey:@"SQLExportContentEnabled"] integerValue]; - BOOL dropEnabled = [[uiStateDict objectForKey:@"SQLExportDropEnabled"] integerValue]; // Disable if all are unchecked if ((!contentEnabled) && (!structureEnabled) && (!dropEnabled)) { enable = NO; } // Disable if structure is unchecked, but content and drop are as dropping a table then trying to insert - // into it is obviously an error + // into it is obviously an error. else if (contentEnabled && (!structureEnabled) && (dropEnabled)) { enable = NO; } - else { + else { enable = (contentEnabled || (structureEnabled || dropEnabled)); } } - + [self performSelectorOnMainThread:@selector(_toggleExportButtonWithBool:) withObject:[NSNumber numberWithBool:enable] waitUntilDone:NO]; [pool release]; } /** - * + * Calls the above method on a background thread to determine whether or not the export button should be enabled. */ - (void)_toggleExportButtonOnBackgroundThread { NSMutableDictionary *uiStateDict = [[NSMutableDictionary alloc] init]; - - [uiStateDict setObject:[[currentToolbarItem label] uppercaseString] forKey:@"ExportFormat"]; - + [uiStateDict setObject:[NSNumber numberWithInteger:[exportSQLIncludeStructureCheck state]] forKey:@"SQLExportStructureEnabled"]; [uiStateDict setObject:[NSNumber numberWithInteger:[exportSQLIncludeContentCheck state]] forKey:@"SQLExportContentEnabled"]; [uiStateDict setObject:[NSNumber numberWithInteger:[exportSQLIncludeDropSyntaxCheck state]] forKey:@"SQLExportDropEnabled"]; @@ -751,9 +811,59 @@ /** * Resizes the export window's height by the supplied delta, while retaining the position of - * all interface controls. + * all interface controls to accommodate the custom filename view. + */ +- (void)_resizeWindowForCustomFilenameViewByHeightDelta:(NSInteger)delta +{ + NSUInteger popUpMask = [exportInputPopUpButton autoresizingMask]; + NSUInteger fileCheckMask = [exportFilePerTableCheck autoresizingMask]; + NSUInteger scrollMask = [exportTablelistScrollView autoresizingMask]; + NSUInteger buttonBarMask = [exportTableListButtonBar autoresizingMask]; + NSUInteger buttonMask = [exportCustomFilenameViewButton autoresizingMask]; + NSUInteger textFieldMask = [exportCustomFilenameViewLabelButton autoresizingMask]; + NSUInteger customFilenameViewMask = [exportCustomFilenameView autoresizingMask]; + NSUInteger tabBarMask = [exportTabBar autoresizingMask]; + + NSRect frame = [[self window] frame]; + + [exportInputPopUpButton setAutoresizingMask:NSViewNotSizable | NSViewMaxYMargin]; + [exportFilePerTableCheck setAutoresizingMask:NSViewNotSizable | NSViewMaxYMargin]; + [exportTablelistScrollView setAutoresizingMask:NSViewNotSizable | NSViewMaxYMargin]; + [exportTableListButtonBar setAutoresizingMask:NSViewNotSizable | NSViewMaxYMargin]; + [exportTabBar setAutoresizingMask:NSViewNotSizable | NSViewMaxYMargin]; + [exportCustomFilenameViewButton setAutoresizingMask:NSViewNotSizable | NSViewMinYMargin]; + [exportCustomFilenameViewLabelButton setAutoresizingMask:NSViewNotSizable | NSViewMinYMargin]; + [exportCustomFilenameView setAutoresizingMask:NSViewNotSizable | NSViewMinYMargin]; + + NSInteger newMinHeight = (windowMinHeigth - heightOffset + delta < windowMinHeigth) ? windowMinHeigth : windowMinHeigth - heightOffset + delta; + + [[self window] setMinSize:NSMakeSize(windowMinWidth, newMinHeight)]; + + frame.origin.y += heightOffset; + frame.size.height -= heightOffset; + + heightOffset = delta; + + frame.origin.y -= heightOffset; + frame.size.height += heightOffset; + + [[self window] setFrame:frame display:YES animate:YES]; + + [exportInputPopUpButton setAutoresizingMask:popUpMask]; + [exportFilePerTableCheck setAutoresizingMask:fileCheckMask]; + [exportTablelistScrollView setAutoresizingMask:scrollMask]; + [exportTableListButtonBar setAutoresizingMask:buttonBarMask]; + [exportCustomFilenameViewButton setAutoresizingMask:buttonMask]; + [exportCustomFilenameViewLabelButton setAutoresizingMask:textFieldMask]; + [exportCustomFilenameView setAutoresizingMask:customFilenameViewMask]; + [exportTabBar setAutoresizingMask:tabBarMask]; +} + +/** + * Resizes the export window's height by the supplied delta, while retaining the position of + * all interface controls to accommodate the advanced options view. */ -- (void)_resizeWindowByHeightDelta:(NSInteger)delta +- (void)_resizeWindowForAdvancedOptionsViewByHeightDelta:(NSInteger)delta { NSUInteger scrollMask = [exportTablelistScrollView autoresizingMask]; NSUInteger buttonBarMask = [exportTableListButtonBar autoresizingMask]; diff --git a/Source/SPExportInitializer.m b/Source/SPExportInitializer.m index 4b7dc38c..7a03c110 100644 --- a/Source/SPExportInitializer.m +++ b/Source/SPExportInitializer.m @@ -54,19 +54,7 @@ // Get rid of the cached connection encoding if (sqlPreviousConnectionEncoding) [sqlPreviousConnectionEncoding release], sqlPreviousConnectionEncoding = nil; - createCustomFilename = ([exportCustomFilenameButton state] && (![[exportCustomFilenameTokenField stringValue] isEqualToString:@""])); - - // First determine what type of export the user selected - for (NSToolbarItem *item in [exportToolbar items]) - { - if ([[item itemIdentifier] isEqualToString:[exportToolbar selectedItemIdentifier]]) { - exportType = [item tag]; - break; - } - } - - // Determine what data to use (filtered result, custom query result or selected table(s)) for the export operation - exportSource = (exportType == SPDotExport) ? SPTableExport : ([exportInputMatrix selectedRow] + 1); + createCustomFilename = ([[exportCustomFilenameTokenField stringValue] length] > 0); NSMutableArray *exportTables = [NSMutableArray array]; @@ -421,6 +409,7 @@ else { [exportFilename setString:[tableDocumentInstance database]]; } + [exportFilename setString:[exportFilename stringByAppendingPathExtension:@"dot"]]; SPFileHandle *fileHandle = [self getFileHandleForFilePath:[[exportPathField stringValue] stringByAppendingPathComponent:exportFilename]]; diff --git a/Source/SPTableContent.m b/Source/SPTableContent.m index de827982..d5ffb47c 100644 --- a/Source/SPTableContent.m +++ b/Source/SPTableContent.m @@ -1828,6 +1828,7 @@ } [currentResult addObject:[NSArray arrayWithArray:tempRow]]; } + return currentResult; } -- cgit v1.2.3