aboutsummaryrefslogtreecommitdiffstats
path: root/Source/SPExportController.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/SPExportController.h')
-rw-r--r--Source/SPExportController.h260
1 files changed, 187 insertions, 73 deletions
diff --git a/Source/SPExportController.h b/Source/SPExportController.h
index 773b678d..0865fef3 100644
--- a/Source/SPExportController.h
+++ b/Source/SPExportController.h
@@ -5,6 +5,7 @@
// sequel-pro
//
// Created by Ben Perry (benperry.com.au) on 21/02/09.
+// Modified by Stuart Connolly (stuconnolly.com)
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
@@ -23,118 +24,231 @@
// More info at <http://code.google.com/p/sequel-pro/>
#import <Cocoa/Cocoa.h>
-#import <MCPKit/MCPKit.h>
-#import "SPExporterDataAccess.h"
+#import "SPConstants.h"
-#import "SPLogger.h"
+@class MCPConnection, BWAnchoredButtonBar;
-// Export type constants
-enum {
- SP_SQL_EXPORT = 1,
- SP_CSV_EXPORT = 2,
- SP_XML_EXPORT = 3,
- SP_PDF_EXPORT = 4,
- SP_HTML_EXPORT = 5,
- SP_EXCEL_EXPORT = 6
-};
-typedef NSUInteger SPExportType;
-
-// Export source constants
-enum {
- SP_FILTERED_EXPORT = 1,
- SP_CUSTOM_QUERY_EXPORT = 2,
- SP_TABLE_EXPORT = 3
-};
-typedef NSUInteger SPExportSource;
-
-@interface SPExportController : NSObject <SPExporterDataAccess>
+/**
+ * @class SPExportController SPExportController.m
+ *
+ * @author Stuart Connolly http://stuconnolly.com/
+ *
+ * Export controller.
+ */
+@interface SPExportController : NSWindowController
{
- // Table document
+ // Controllers
IBOutlet id tableDocumentInstance;
-
- // Tables list
+ IBOutlet id tableContentInstance;
+ IBOutlet id customQueryInstance;
IBOutlet id tablesListInstance;
-
- // Table data
IBOutlet id tableDataInstance;
// Export window
- IBOutlet id exportWindow;
- IBOutlet id exportToolbar;
- IBOutlet id exportPathField;
- IBOutlet id exportTableList;
- IBOutlet id exportTabBar;
- IBOutlet id exportInputMatrix;
- IBOutlet id exportFilePerTableCheck;
- IBOutlet id exportFilePerTableNote;
- IBOutlet id exportProcessLowMemory;
+ IBOutlet NSButton *exportButton;
+ IBOutlet NSToolbar *exportToolbar;
+ IBOutlet NSTextField *exportPathField;
+ IBOutlet NSTableView *exportTableList;
+ IBOutlet NSTabView *exportTabBar;
+ IBOutlet NSMatrix *exportInputMatrix;
+ IBOutlet NSButton *exportFilePerTableCheck;
+ IBOutlet NSTextField *exportFilePerTableNote;
+ IBOutlet NSButton *exportSelectAllTablesButton;
+ IBOutlet NSButton *exportDeselectAllTablesButton;
+ IBOutlet NSButton *exportRefreshTablesButton;
+ IBOutlet NSScrollView *exportTablelistScrollView;
+
+ // Errors sheet
+ IBOutlet NSWindow *errorsWindow;
+ IBOutlet NSTextView *errorsTextView;
+
+ // Advanced options view
+ IBOutlet NSButton *exportAdvancedOptionsViewButton;
+ IBOutlet NSView *exportAdvancedOptionsView;
+ IBOutlet NSButton *exportAdvancedOptionsViewLabelButton;
+ IBOutlet NSButton *exportUseUTF8BOMButton;
+ IBOutlet NSButton *exportCompressOutputFile;
+ IBOutlet NSButton *exportProcessLowMemoryButton;
+ IBOutlet NSTextField *exportCSVNULLValuesAsTextField;
+
+ IBOutlet BWAnchoredButtonBar *exportTableListButtonBar;
// Export progress sheet
- IBOutlet id exportProgressWindow;
- IBOutlet id exportProgressTitle;
- IBOutlet id exportProgressText;
- IBOutlet id exportProgressIndicator;
+ IBOutlet NSWindow *exportProgressWindow;
+ IBOutlet NSTextField *exportProgressTitle;
+ IBOutlet NSTextField *exportProgressText;
+ IBOutlet NSProgressIndicator *exportProgressIndicator;
+
+ // Custom filename view
+ IBOutlet NSView *exportCustomFilenameView;
+ IBOutlet NSButton *exportCustomFilenameButton;
+ IBOutlet NSTokenField *exportCustomFilenameTokenField;
+ IBOutlet NSTokenField *exportCustomFilenameTokensField;
+ IBOutlet NSTextField *exportCustomFilenameExampleTextField;
// SQL
- IBOutlet id exportSQLIncludeStructureCheck;
- IBOutlet id exportSQLIncludeDropSyntaxCheck;
- IBOutlet id exportSQLIncludeErrorsCheck;
+ IBOutlet NSButton *exportSQLIncludeStructureCheck;
+ IBOutlet NSButton *exportSQLIncludeDropSyntaxCheck;
+ IBOutlet NSButton *exportSQLIncludeContentCheck;
+ IBOutlet NSButton *exportSQLIncludeErrorsCheck;
+ IBOutlet NSButton *exportSQLBLOBFieldsAsHexCheck;
// Excel
- IBOutlet id exportExcelSheetOrFilePerTableMatrix;
+ IBOutlet NSMatrix *exportExcelSheetOrFilePerTableMatrix;
// CSV
- IBOutlet id exportCSVIncludeFieldNamesCheck;
- IBOutlet id exportCSVFieldsTerminatedField;
- IBOutlet id exportCSVFieldsWrappedField;
- IBOutlet id exportCSVFieldsEscapedField;
- IBOutlet id exportCSVLinesTerminatedField;
+ IBOutlet NSButton *exportCSVIncludeFieldNamesCheck;
+ IBOutlet NSComboBox *exportCSVFieldsTerminatedField;
+ IBOutlet NSComboBox *exportCSVFieldsWrappedField;
+ IBOutlet NSComboBox *exportCSVFieldsEscapedField;
+ IBOutlet NSComboBox *exportCSVLinesTerminatedField;
// HTML
- IBOutlet id exportHTMLIncludeStructureCheck;
- IBOutlet id exportHTMLIncludeHeadAndBodyTagsCheck;
-
- // XML
- IBOutlet id exportXMLIncludeStructureCheck;
+ IBOutlet NSButton *exportHTMLIncludeStructureCheck;
// PDF
- IBOutlet id exportPDFIncludeStructureCheck;
-
- // Token name view
- IBOutlet id tokenNameView;
- IBOutlet id tokenNameField;
- IBOutlet id tokenNameTokensField;
- IBOutlet id exampleNameLabel;
+ IBOutlet NSButton *exportPDFIncludeStructureCheck;
- // Cancellation flag
+ /**
+ * Cancellation flag
+ */
BOOL exportCancelled;
- // Current database's tables
+ /**
+ * Multi-file export flag
+ */
+ BOOL exportToMultipleFiles;
+
+ /**
+ * Create custom filename flag
+ */
+ BOOL createCustomFilename;
+
+ /**
+ * Number of tables being exported
+ */
+ NSUInteger exportTableCount;
+
+ /**
+ * Index of the current table being exported
+ */
+ NSUInteger currentTableExportIndex;
+
+ /**
+ * Export type label
+ */
+ NSString *exportTypeLabel;
+
+ /**
+ * Export filename
+ */
+ NSString *exportFilename;
+
+ /**
+ * Current database's tables
+ */
NSMutableArray *tables;
- // Database connection
+ /**
+ * Database connection
+ */
MCPConnection *connection;
- // Concurrent operation queue
+ /**
+ * Concurrent operation queue
+ */
NSOperationQueue *operationQueue;
- // Table/export operation mapping
- NSMutableDictionary *tableExportMapping;
+ /**
+ * Exporters
+ */
+ NSMutableArray *exporters;
+
+ /**
+ * Global export file handle
+ */
+ NSFileHandle *exportFileHandle;
+
+ /**
+ * Export type
+ */
+ SPExportType exportType;
+
+ /**
+ * Export source
+ */
+ SPExportSource exportSource;
+
+ /**
+ * Available filename tokens
+ */
+ NSString *availableFilenameTokens;
+
+ /**
+ * Display advanced view flag
+ */
+ BOOL showAdvancedView;
+
+ /**
+ * User defaults
+ */
+ NSUserDefaults *prefs;
+
+ /**
+ * Current toolbar item
+ */
+ NSToolbarItem *currentToolbarItem;
+
+ /**
+ * Previous connection encoding
+ */
+ NSString *sqlPreviousConnectionEncoding;
+
+ /**
+ * Previous connection encoding was via Latin1
+ */
+ BOOL sqlPreviousConnectionEncodingViaLatin1;
- // Top-level nib objects that require releasing on dealloc
- NSMutableArray *nibObjectsToRelease;
+ NSInteger heightOffset;
+ NSUInteger windowMinWidth;
+ NSUInteger windowMinHeigth;
}
-@property (readwrite, assign) BOOL exportCancelled;
-@property (readwrite, assign) MCPConnection *connection;
+/**
+ * @property exportCancelled Export cancellation flag
+ */
+@property(readwrite, assign) BOOL exportCancelled;
+
+/**
+ * @property exportToMultipleFiles Export to multiple files flag
+ */
+@property(readwrite, assign) BOOL exportToMultipleFiles;
+
+/**
+ * @property connection Database connection
+ */
+@property(readwrite, assign) MCPConnection *connection;
-// IB action methods
- (void)export;
+- (void)exportTables:(NSArray *)table asFormat:(SPExportType)format;
+- (void)openExportErrorsSheetWithString:(NSString *)errors;
+- (void)displayExportFinishedGrowlNotification;
+- (NSString *)expandCustomFilenameFormatFromString:(NSString *)format usingTableName:(NSString *)table;
+
+// IB action methods
- (IBAction)closeSheet:(id)sender;
- (IBAction)switchTab:(id)sender;
- (IBAction)switchInput:(id)sender;
- (IBAction)cancelExport:(id)sender;
- (IBAction)changeExportOutputPath:(id)sender;
+- (IBAction)refreshTableList:(id)sender;
+- (IBAction)selectDeselectAllTables:(id)sender;
+- (IBAction)toggleCustomFilenameFormat:(id)sender;
+- (IBAction)toggleAdvancedExportOptionsView:(id)sender;
+
+- (IBAction)toggleSQLIncludeStructure:(id)sender;
+- (IBAction)toggleSQLIncludeContent:(id)sender;
+- (IBAction)toggleSQLIncludeDropSyntax:(id)sender;
@end