From 1064dfa5438d493f996d52fd9b1554d121b93214 Mon Sep 17 00:00:00 2001 From: rowanbeentje Date: Mon, 23 Nov 2009 02:15:45 +0000 Subject: - Replace the LIMIT interface on the content view with a pagination control at the bottom. This addresses the last of Issue #49 and implements Issue #133; jump-to and two prefs affecting loading are available in a popup when clicking the pagination interface. - Format row counts at the bottom of the content pane - Increase the MCPStreamingResult buffer for a stronger workaround for #463 --- .../MCPKit/MCPFoundationKit/MCPStreamingResult.m | 4 +- Interfaces/English.lproj/ContentPaginationView.xib | 2235 ++++++++++++++++++++ Interfaces/English.lproj/DBView.xib | 642 +++--- Interfaces/English.lproj/Preferences.xib | 158 +- Resources/Images/button_left.png | Bin 0 -> 408 bytes Resources/Images/button_pagination.png | Bin 0 -> 311 bytes Resources/Images/button_right.png | Bin 0 -> 422 bytes Source/SPHistoryController.m | 28 +- Source/TableContent.h | 28 +- Source/TableContent.m | 292 ++- Source/TableDocument.m | 6 +- sequel-pro.xcodeproj/project.pbxproj | 24 + 12 files changed, 2845 insertions(+), 572 deletions(-) create mode 100644 Interfaces/English.lproj/ContentPaginationView.xib create mode 100644 Resources/Images/button_left.png create mode 100644 Resources/Images/button_pagination.png create mode 100644 Resources/Images/button_right.png diff --git a/Frameworks/MCPKit/MCPFoundationKit/MCPStreamingResult.m b/Frameworks/MCPKit/MCPFoundationKit/MCPStreamingResult.m index 008dd870..84120505 100644 --- a/Frameworks/MCPKit/MCPFoundationKit/MCPStreamingResult.m +++ b/Frameworks/MCPKit/MCPFoundationKit/MCPStreamingResult.m @@ -162,10 +162,10 @@ // Check to see whether we need to wait for the data to be availabe // - if so, wait 1ms before checking again. - // Keep the data processing thread at least one full row behind the download + // Keep the data processing thread at a number of rows behind the download // thread - this aids memory issues across the threads and prevents occasional // race condition crashes. - while (!dataDownloaded && (processedRowCount + 2 > downloadedRowCount)) { + while (!dataDownloaded && (processedRowCount + 10 > downloadedRowCount)) { usleep(1000); } diff --git a/Interfaces/English.lproj/ContentPaginationView.xib b/Interfaces/English.lproj/ContentPaginationView.xib new file mode 100644 index 00000000..43977acc --- /dev/null +++ b/Interfaces/English.lproj/ContentPaginationView.xib @@ -0,0 +1,2235 @@ + + + + 1050 + 10C540 + 740 + 1038.25 + 458.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 740 + + + YES + + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + YES + + + YES + + + + YES + + TableContent + + + FirstResponder + + + NSApplication + + + + 289 + + YES + + + 12 + + YES + + + 256 + + YES + + + 268 + {{134, 97}, {70, 22}} + + 2 + YES + + -1804468671 + 67109888 + + + LucidaGrande + 13 + 1044 + + + + YES + + YES + allowsFloats + formatterBehavior + lenient + locale + minimum + negativeInfinitySymbol + nilSymbol + numberStyle + positiveFormat + positiveInfinitySymbol + roundingIncrement + + + YES + + + + + + + + -∞ + + + #,##1 + +∞ + + + + #,##1 + #,##0 + + + + + + + + NaN + + YES + + + YES + + + + + + 0 + 0 + YES + NO + 1 + AAAAAAAAAAAAAAAAAAAAAA + + + 3 + YES + YES + YES + + . + , + YES + NO + NO + + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + 3 + MAA + + + + + + + 268 + {{209, 94}, {19, 27}} + + 2 + YES + + 917024 + 0 + + 1 + 1 + 1000000 + 1 + YES + + + + + 268 + {{27, 99}, {102, 17}} + + 2 + YES + + 68288064 + 71304192 + Jump to page: + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + + + + + + 268 + {{233, 97}, {32, 19}} + + 2 + YES + + -2080244224 + 134217728 + Go + + LucidaGrande + 12 + 16 + + + -2038152961 + 164 + + + 400 + 75 + + + + + 12 + {{11, 81}, {254, 5}} + + 2 + {0, 0} + + 67239424 + 0 + Box + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + 3 + 2 + 0 + NO + + + + 268 + {{13, 48}, {115, 18}} + + 2 + YES + + 67239424 + 0 + Limit result to: + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 268 + {{134, 46}, {70, 22}} + + 2 + YES + + -1804468671 + 272630784 + + + + YES + + + + + + + 268 + {{209, 44}, {19, 27}} + + 2 + YES + + 917024 + 0 + + 1 + 1 + 100000 + 1 + YES + + + + + 268 + {{230, 49}, {38, 17}} + + 2 + YES + + 68288064 + 272630784 + rows + + + + + + + + + 268 + {{13, 22}, {254, 18}} + + 2 + YES + + 67239424 + 0 + Defer loading of blobs and texts + + + 1211912703 + 2 + + + + + 200 + 25 + + + + {{1, 1}, {276, 134}} + + 2 + + + {{0, -1}, {278, 136}} + + 2 + {0, 0} + + 67239424 + 0 + + + LucidaGrande + 11 + 3100 + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + + 1 + 4 + 0 + NO + + 3 + MCAwLjIAA + + + 3 + MC45NDc1ODA2NDUyAA + + + + {278, 135} + + 2 + NSView + + + + YES + LimitResults + LimitResultsValue + LoadBlobsAsNeeded + + YES + + + + + YES + + + takeIntValueFrom: + + + + 21 + + + + value: values.LimitResults + + + + + + value: values.LimitResults + value + values.LimitResults + 2 + + + 26 + + + + enabled: values.LimitResults + + + + + + enabled: values.LimitResults + enabled + values.LimitResults + 2 + + + 28 + + + + enabled: values.LimitResults + + + + + + enabled: values.LimitResults + enabled + values.LimitResults + 2 + + + 30 + + + + enabled: values.LimitResults + + + + + + enabled: values.LimitResults + enabled + values.LimitResults + 2 + + + 32 + + + + value: values.LimitResultsValue + + + + + + value: values.LimitResultsValue + value + values.LimitResultsValue + 2 + + + 34 + + + + enabled: values.LimitResults + + + + + + enabled: values.LimitResults + enabled + values.LimitResults + 2 + + + 37 + + + + value: values.LoadBlobsAsNeeded + + + + + + value: values.LoadBlobsAsNeeded + value + values.LoadBlobsAsNeeded + 2 + + + 39 + + + + enabled: values.LimitResults + + + + + + enabled: values.LimitResults + enabled + values.LimitResults + 2 + + + 41 + + + + takeIntValueFrom: + + + + 42 + + + + value: values.LimitResultsValue + + + + + + value: values.LimitResultsValue + value + values.LimitResultsValue + 2 + + + 44 + + + + paginationPageField + + + + 45 + + + + paginationView + + + + 46 + + + + performClick: + + + + 48 + + + + paginationPageStepper + + + + 49 + + + + filterTable: + + + + 51 + + + + + YES + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 1 + + + YES + + + + + + 2 + + + YES + + + + + + + + + + + + + + + 3 + + + YES + + + + + + 4 + + + YES + + + + + + 5 + + + YES + + + + + + 6 + + + + + 7 + + + YES + + + + + + 8 + + + + + 9 + + + YES + + + + + + 10 + + + + + 11 + + + + + 12 + + + YES + + + + + + 13 + + + + + 14 + + + YES + + + + + + 15 + + + + + 16 + + + YES + + + + + + 17 + + + + + 18 + + + YES + + + + + + 19 + + + + + 20 + + + + + 22 + + + YES + + + + + + 23 + + + + + 24 + + + + + + + YES + + YES + 1.IBEditorWindowLastContentRect + 1.IBPluginDependency + 1.IBViewIntegration.shadowBlurRadius + 1.WindowOrigin + 1.editorWindowContentRectSynchronizationRect + 10.IBPluginDependency + 11.IBPluginDependency + 12.IBPluginDependency + 13.IBPluginDependency + 14.IBPluginDependency + 15.IBPluginDependency + 16.IBPluginDependency + 17.IBPluginDependency + 18.IBPluginDependency + 19.IBPluginDependency + 2.IBPluginDependency + 20.IBNumberFormatterBehaviorMetadataKey + 20.IBNumberFormatterLocalizesFormatMetadataKey + 20.IBPluginDependency + 22.IBPluginDependency + 23.IBPluginDependency + 3.IBPluginDependency + 4.IBPluginDependency + 5.IBPluginDependency + 6.IBPluginDependency + 7.IBPluginDependency + 8.IBPluginDependency + 9.IBPluginDependency + + + YES + {{429, 372}, {278, 135}} + com.apple.InterfaceBuilder.CocoaPlugin + + {628, 654} + {{217, 442}, {480, 272}} + 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 + + + + YES + + + YES + + + + + YES + + + YES + + + + 51 + + + + YES + + CMCopyTable + SPTableView + + copy: + id + + + YES + + YES + mySQLConnection + tableData + tableInstance + + + YES + id + id + id + + + + IBProjectSource + Source/CMCopyTable.h + + + + NSDictionary + + IBProjectSource + Source/NSDictionary_DeepMutableCopy.h + + + + NSObject + + IBProjectSource + Frameworks/MCPKit/MCPFoundationKit/MCPConnection.h + + + + NSObject + + IBProjectSource + Frameworks/MCPKit/MCPFoundationKit/MCPNull.h + + + + NSObject + + IBProjectSource + Source/CMImageView.h + + + + NSObject + + IBProjectSource + Source/SPConnectionController.h + + + + NSObject + + IBProjectSource + Source/SPContentFilterManager.h + + + + NSObject + + IBProjectSource + Source/SPNotLoaded.h + + + + NSObject + + IBProjectSource + Source/SPQueryFavoriteManager.h + + + + NSObject + + toggleCollapse: + id + + + IBProjectSource + Source/TablesList.h + + + + NSTextView + + YES + + YES + doDecomposedStringWithCanonicalMapping: + doDecomposedStringWithCompatibilityMapping: + doPrecomposedStringWithCanonicalMapping: + doPrecomposedStringWithCompatibilityMapping: + doRemoveDiacritics: + doSelectionLowerCase: + doSelectionTitleCase: + doSelectionUpperCase: + doTranspose: + insertNULLvalue: + selectCurrentLine: + selectCurrentWord: + selectEnclosingBrackets: + + + YES + id + id + id + id + id + id + id + id + id + id + id + id + id + + + + IBProjectSource + Source/SPTextViewAdditions.h + + + + NSWindow + + IBProjectSource + Source/SPWindowAdditions.h + + + + SPHistoryController + NSObject + + historyControlClicked: + NSSegmentedControl + + + YES + + YES + historyControl + theDocument + + + YES + NSSegmentedControl + TableDocument + + + + IBProjectSource + Source/SPHistoryController.h + + + + SPTableInfo + NSObject + + YES + + YES + infoTable + tableDataInstance + tableDocumentInstance + tableList + tableListInstance + + + YES + id + id + id + id + id + + + + IBProjectSource + Source/SPTableInfo.h + + + + SPTableView + NSTableView + + IBProjectSource + Source/SPTableView.h + + + + SPUserManager + NSWindowController + + YES + + YES + addHost: + addUser: + checkAllPrivileges: + doApply: + doCancel: + removeHost: + removeUser: + uncheckAllPrivileges: + + + YES + id + id + id + id + id + id + id + id + + + + YES + + YES + outlineView + privsSupportedByServer + tabView + treeController + + + YES + NSOutlineView + NSMutableDictionary + NSTabView + NSTreeController + + + + IBProjectSource + Source/SPUserManager.h + + + + TableContent + NSObject + + YES + + YES + addRow: + copyRow: + filterTable: + navigatePaginationFromButton: + reloadTable: + removeRow: + setCompareTypes: + toggleFilterField: + togglePagination: + + + YES + id + id + id + id + id + id + id + id + id + + + + YES + + YES + addButton + argumentField + betweenTextField + compareField + contentFilterManager + contentViewPane + copyButton + countText + fieldField + filterButton + firstBetweenField + limitRowsButton + limitRowsField + limitRowsStepper + multipleLineEditingButton + paginationButton + paginationNextButton + paginationPageField + paginationPageStepper + paginationPreviousButton + paginationView + reloadButton + removeButton + secondBetweenField + spHistoryControllerInstance + tableContentView + tableDataInstance + tableDocumentInstance + tableInfoInstance + tableWindow + tablesListInstance + + + YES + id + id + id + id + id + NSView + id + id + id + id + id + id + id + id + id + NSButton + NSButton + NSTextField + NSStepper + NSButton + NSView + id + id + id + SPHistoryController + CMCopyTable + id + id + SPTableInfo + id + id + + + + IBProjectSource + Source/TableContent.h + + + + TableDocument + + IBProjectSource + Source/SPConnectionDelegate.h + + + + TableDocument + NSDocument + + YES + + YES + addConnectionToFavorites: + addDatabase: + analyzeTable: + backForwardInHistory: + cancelTask: + checkTable: + checksumTable: + chooseDatabase: + chooseEncoding: + closeErrorConnectionSheet: + closePanelSheet: + closePasswordSheet: + closeSheet: + copyCreateTableSyntax: + copyCreateTableSyntaxFromSheet: + export: + exportMultipleTables: + exportTable: + flushPrivileges: + flushTable: + import: + openCurrentConnectionInNewWindow: + optimizeTable: + removeDatabase: + repairTable: + saveConnectionSheet: + saveCreateSyntax: + setDatabases: + showCreateTableSyntax: + showMySQLHelp: + showServerProcesses: + showServerVariables: + showUserManager: + validateSaveConnectionAccessory: + viewContent: + viewQuery: + viewRelations: + viewStatus: + viewStructure: + + + YES + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + + + + YES + + YES + addDatabaseButton + chooseDatabaseButton + connectionErrorDialog + contentViewSplitter + createTableSyntaxTextField + createTableSyntaxTextView + createTableSyntaxWindow + customQueryInstance + customQueryTextView + databaseDataInstance + databaseEncodingButton + databaseNameField + databaseSheet + dbTablesTableView + encodingPopUp + exportControllerInstance + extendedTableInfoInstance + favoritesButton + historyControl + inputTextWindow + inputTextWindowHeader + inputTextWindowMessage + inputTextWindowSecureTextField + listFilterField + queryProgressBar + saveConnectionAccessory + saveConnectionAutoConnect + saveConnectionEncrypt + saveConnectionEncryptString + saveConnectionIncludeData + saveConnectionIncludeQuery + saveConnectionSavePassword + saveConnectionSavePasswordAlert + sidebarGrabber + spHistoryControllerInstance + tableContentInstance + tableDataInstance + tableDumpInstance + tableInfoCollapseButton + tableInfoTable + tableListSplitter + tableRelationsInstance + tableSourceInstance + tableTabView + tableWindow + tablesListInstance + taskCancelButton + taskCancellationCallbackObject + taskDescriptionText + taskProgressIndicator + taskProgressLayer + titleAccessoryView + titleImageView + titleStringView + userManagerInstance + + + YES + id + id + NSWindow + NSSplitView + NSTextField + NSTextView + NSWindow + id + NSTextView + id + id + id + id + NSTableView + NSPopUpButton + id + id + id + id + id + id + id + id + NSSearchField + id + id + id + id + NSSecureTextField + id + id + id + id + id + id + id + id + id + NSButton + NSTableView + NSSplitView + id + id + NSTabView + id + id + NSButton + id + id + id + NSBox + id + id + id + SPUserManager + + + + IBProjectSource + Source/TableDocument.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 + + + + 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 + + + + NSDocument + NSObject + + YES + + YES + printDocument: + revertDocumentToSaved: + runPageLayout: + saveDocument: + saveDocumentAs: + saveDocumentTo: + + + YES + id + id + id + id + id + id + + + + IBFrameworkSource + AppKit.framework/Headers/NSDocument.h + + + + NSDocument + + IBFrameworkSource + AppKit.framework/Headers/NSDocumentScripting.h + + + + NSFormatter + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFormatter.h + + + + NSMenu + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenu.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 + 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 + + + + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSInterfaceStyle.h + + + + NSResponder + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSResponder.h + + + + NSSearchField + NSTextField + + IBFrameworkSource + AppKit.framework/Headers/NSSearchField.h + + + + NSSecureTextField + NSTextField + + IBFrameworkSource + AppKit.framework/Headers/NSSecureTextField.h + + + + NSSegmentedControl + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSSegmentedControl.h + + + + NSSplitView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSSplitView.h + + + + NSStepper + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSStepper.h + + + + NSStepperCell + NSActionCell + + IBFrameworkSource + AppKit.framework/Headers/NSStepperCell.h + + + + NSTabView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSTabView.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 + + + + NSUserDefaultsController + NSController + + IBFrameworkSource + AppKit.framework/Headers/NSUserDefaultsController.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSClipView.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSMenuItem.h + + + + 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 + + + IBFrameworkSource + AppKit.framework/Headers/NSWindowController.h + + + + + 0 + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + ../../sequel-pro.xcodeproj + 3 + + diff --git a/Interfaces/English.lproj/DBView.xib b/Interfaces/English.lproj/DBView.xib index 57f655d9..bae3ce00 100644 --- a/Interfaces/English.lproj/DBView.xib +++ b/Interfaces/English.lproj/DBView.xib @@ -23,13 +23,13 @@ YES - + YES com.brandonwalkin.BWToolkit - com.apple.WebKitIBPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.WebKitIBPlugin YES @@ -59,7 +59,7 @@ Sequel Pro NSWindow View - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} {780, 480} @@ -101,7 +101,6 @@ 266 {{5, 2}, {202, 19}} - YES 343014976 @@ -194,7 +193,6 @@ 256 {212, 26} - YES @@ -239,7 +237,7 @@ controlColor 3 - MC42NjY2NjY2ODY1AA + MC42NjY2NjY2NjY3AA @@ -283,7 +281,6 @@ {212, 26} - @@ -299,7 +296,6 @@ -2147483392 {{-100, -100}, {15, 102}} - _doScroller: 37 @@ -310,7 +306,6 @@ -2147483392 {{-100, -100}, {223, 15}} - 1 _doScroller: @@ -319,7 +314,6 @@ {212, 26} - 0 @@ -330,7 +324,6 @@ {212, 26} - NSView @@ -353,7 +346,6 @@ 4352 {212, 354} - YES @@ -420,7 +412,6 @@ {212, 354} - @@ -431,7 +422,6 @@ -2147483392 {{197, 0}, {15, 292}} - _doScroller: 0.99658697843551636 @@ -441,7 +431,6 @@ -2147483392 {{-100, -100}, {141, 11}} - 257 _doScroller: @@ -450,7 +439,6 @@ {212, 354} - 528 @@ -461,13 +449,11 @@ {{0, 27}, {212, 354}} - NSView {212, 381} - 2 6 @@ -501,7 +487,6 @@ {212, 381} - NSView @@ -524,7 +509,6 @@ 4352 {212, 145} - YES @@ -591,7 +575,6 @@ {212, 145} - @@ -602,7 +585,6 @@ -2147483392 {{-100, -100}, {15, 20}} - _doScroller: 0.94736838340759277 @@ -612,7 +594,6 @@ -2147483392 {{-100, -100}, {141, 11}} - 257 _doScroller: @@ -621,7 +602,6 @@ {212, 145} - 512 @@ -632,13 +612,11 @@ {{0, 382}, {212, 145}} - NSView {{0, 23}, {212, 527}} - 2 NO @@ -689,7 +667,6 @@ 268 {{-1, -1}, {32, 24}} - YES 67239424 @@ -714,7 +691,6 @@ 268 {{30, -1}, {32, 24}} - YES 71433792 @@ -820,7 +796,6 @@ 268 {{61, -1}, {32, 24}} - YES 67239424 @@ -845,7 +820,6 @@ 268 {{92, -1}, {32, 24}} - YES -2080244224 @@ -872,7 +846,6 @@ {212, 23} - YES YES NO @@ -881,7 +854,6 @@ {212, 550} - NSView @@ -894,7 +866,6 @@ 274 {{-7, -10}, {735, 564}} - YES @@ -2169,7 +2140,7 @@ content - + 256 YES @@ -2300,100 +2271,6 @@ QSAAAEEgAABBkAAAQZAAAA - - - 265 - {{618, 513}, {40, 19}} - - YES - - -1267597759 - -1874721792 - - - - - YES - - YES - allowsFloats - formatterBehavior - locale - - - YES - - - - - - - - # - # - - - - - - NaN - - YES - - - YES - - - - - 0 - 0 - YES - NO - 1 - AAAAAAAAAAAAAAAAAAAAAA - - - - 3 - YES - YES - YES - - . - , - NO - NO - NO - - 0 - - YES - - - 6 - System - textColor - - - - - - - 265 - {{548, 515}, {65, 14}} - - YES - - 67239488 - 272761856 - Limit From: - - - - - - 1289 @@ -2406,7 +2283,7 @@ 265 - {{489, 512}, {54, 19}} + {{614, 513}, {54, 19}} YES @@ -2427,22 +2304,6 @@ 75 - - - 265 - {{659, 511}, {15, 22}} - - YES - - 604896800 - 131072 - - - 100 - 1 - YES - - 292 @@ -2587,7 +2448,7 @@ 290 - {{166, 6}, {525, 22}} + {{166, 6}, {327, 22}} YES @@ -2629,7 +2490,7 @@ 266 - {{51, 3}, {102, 20}} + {{51, 3}, {157, 20}} YES @@ -2677,7 +2538,7 @@ 265 - {{158, 0}, {95, 25}} + {{213, 0}, {95, 25}} YES @@ -2722,7 +2583,7 @@ - {255, 27} + {310, 27} NSView @@ -2734,7 +2595,7 @@ 266 - {{5, 4}, {205, 19}} + {{5, 4}, {275, 19}} YES @@ -2797,7 +2658,7 @@ -2147483379 - {{93, 6}, {28, 14}} + {{128, 6}, {28, 14}} YES @@ -2813,7 +2674,7 @@ -2147483378 - {{5, 4}, {83, 19}} + {{5, 4}, {111, 19}} YES @@ -2874,7 +2735,7 @@ -2147483381 - {{127, 4}, {83, 19}} + {{169, 4}, {110, 19}} YES @@ -2935,18 +2796,91 @@ - {{264, 0}, {211, 27}} + {{319, 0}, {281, 27}} NSView - {{6, 509}, {475, 27}} + {{6, 509}, {600, 27}} YES TableFilterSplitter + + + 289 + {{648, 9}, {32, 25}} + + YES + + 67239424 + 134217728 + + + + -2042347265 + 35 + + NSImage + button_right + + + + 400 + 75 + + + + + 289 + {{493, 9}, {32, 25}} + + YES + + 67239424 + 134217728 + + + + -2042347265 + 35 + + NSImage + button_left + + + + 400 + 75 + + + + + 289 + {{524, 9}, {125, 25}} + + YES + + 67239424 + 134217728 + + + + -934526721 + 268435491 + + NSImage + button_pagination + + + j + 400 + 75 + + {{10, 7}, {700, 544}} + Content @@ -2955,7 +2889,7 @@ customQuery - + 256 YES @@ -2982,32 +2916,8 @@ 6418 - - YES - - YES - Apple HTML pasteboard type - Apple PDF pasteboard type - Apple PICT pasteboard type - Apple PNG pasteboard type - Apple URL pasteboard type - CorePasteboardFlavorType 0x6D6F6F76 - NSColor pasteboard type - NSFilenamesPboardType - NSStringPboardType - NeXT Encapsulated PostScript v1.2 pasteboard type - NeXT RTFD pasteboard type - NeXT Rich Text Format v1.0 pasteboard type - NeXT TIFF v4.0 pasteboard type - NeXT font pasteboard type - NeXT ruler pasteboard type - WebURLsWithTitlesPboardType - public.url - - {688, 14} - @@ -3067,7 +2977,6 @@ {{1, 1}, {688, 155}} - @@ -3082,7 +2991,6 @@ -2147483392 {{598, 1}, {15, 68}} - _doScroller: 1 @@ -3092,7 +3000,6 @@ -2147483392 {{-100, -100}, {601, 11}} - 257 _doScroller: @@ -3102,7 +3009,6 @@ {690, 157} - 530 @@ -3112,7 +3018,6 @@ {690, 156} - NSView @@ -3135,14 +3040,12 @@ 4352 {688, 228} - YES 256 {688, 17} - @@ -3150,7 +3053,6 @@ -2147483392 {{-26, 0}, {16, 17}} - YES @@ -3197,7 +3099,6 @@ {{1, 17}, {688, 228}} - @@ -3208,7 +3109,6 @@ -2147483392 {{611, 17}, {15, 30}} - _doScroller: 0.9375 @@ -3218,7 +3118,6 @@ -2147483392 {{1, 47}, {610, 15}} - 1 _doScroller: @@ -3233,7 +3132,6 @@ {{1, 0}, {688, 17}} - @@ -3243,7 +3141,6 @@ {690, 246} - 562 @@ -3258,7 +3155,6 @@ 268 {{156, 246}, {98, 22}} - YES -2076049856 @@ -3326,7 +3222,6 @@ 264 {{38, 246}, {108, 22}} - YES -2076049856 @@ -3429,7 +3324,6 @@ - 6 YES 3 YES @@ -3442,7 +3336,6 @@ 268 {{-10, 245}, {46, 25}} - YES -2076049856 @@ -3735,7 +3628,6 @@ 265 {{591, 248}, {90, 17}} - YES -2080244224 @@ -3757,7 +3649,6 @@ 265 {{473, 248}, {110, 17}} - YES 604110336 @@ -3790,7 +3681,6 @@ {{32, 246}, {658, 23}} - YES 130560 @@ -3806,7 +3696,6 @@ {{0, 165}, {690, 269}} - NSView @@ -3819,7 +3708,6 @@ 266 {{242, 64}, {431, 17}} - YES 67239424 @@ -3836,7 +3724,6 @@ 264 {{17, 67}, {143, 14}} - YES 67239424 @@ -3853,7 +3740,6 @@ 274 {{17, 20}, {656, 43}} - YES 69336577 @@ -3868,18 +3754,14 @@ {{0, 443}, {690, 87}} - NSView {{6, 10}, {690, 530}} - {{10, 7}, {700, 544}} - - Custom Query @@ -4924,37 +4806,34 @@ - + 134217731 YES YES YES - + {{221, 0}, {723, 550}} - NSView {944, 550} - YES DBViewSplitter {944, 550} - {{0, 0}, {1920, 1178}} {780, 502} - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} @@ -5020,7 +4899,12 @@ YES - + + 6 + System + textColor + + @@ -6125,7 +6009,7 @@ View - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} {213, 107} @@ -6405,7 +6289,7 @@ {{0, 0}, {1440, 878}} {213, 129} - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} 1 @@ -6417,7 +6301,7 @@ View - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} {213, 107} @@ -6573,7 +6457,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {{0, 0}, {1440, 878}} {213, 129} - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} 1 @@ -6583,7 +6467,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 New Relation NSPanel - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} 256 @@ -7184,7 +7068,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {302, 307} {{0, 0}, {1440, 878}} - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} 3 @@ -7196,7 +7080,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 View - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} {213, 50} @@ -7316,7 +7200,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {{0, 0}, {1920, 1178}} {213, 72} - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} 9 @@ -7328,7 +7212,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 View - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} {213, 107} @@ -7463,7 +7347,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {{0, 0}, {1440, 878}} {213, 129} - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} 15 @@ -7475,7 +7359,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 View - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} {350, 200} @@ -7677,7 +7561,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {{0, 0}, {1680, 1028}} {350, 222} - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} 9 @@ -7689,7 +7573,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 View - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} {213, 107} @@ -7838,7 +7722,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {{0, 0}, {1440, 878}} {213, 129} - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} 31 @@ -7848,7 +7732,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 MySQL Help NSPanel - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} {351, 120} @@ -8242,7 +8126,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {{0, 0}, {1280, 1002}} {351, 136} - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} MYSQL_HELP_WINDOW @@ -8255,7 +8139,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 View - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} {350, 250} @@ -8646,7 +8530,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {{0, 0}, {1920, 1178}} {350, 272} - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} 9 @@ -8779,7 +8663,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 Secure Text Input Sheet NSPanel - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} 256 @@ -8883,7 +8767,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {338, 138} {{0, 0}, {1280, 778}} - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} @@ -10749,7 +10633,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 disabledControlTextColor 3 - MC4zMzMzMzMzNDMzAA + MC4zMzMzMzMzMzMzAA @@ -10841,6 +10725,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 268 {{20, 1}, {176, 19}} + YES 343014976 @@ -10903,6 +10788,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {217, 20} + NSView @@ -12011,14 +11897,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 3965 - - - limitRowsField - - - - 3975 - chooseDatabaseButton @@ -12227,30 +12105,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 4685 - - - limitRowsStepper - - - - 4688 - - - - stepLimitRows: - - - - 4689 - - - - performClick: - - - - 4693 - tableDocumentInstance @@ -14872,6 +14726,62 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 6642 + + + paginationButton + + + + 6657 + + + + contentViewPane + + + + 6661 + + + + togglePagination: + + + + 6662 + + + + paginationPreviousButton + + + + 6663 + + + + paginationNextButton + + + + 6664 + + + + navigatePaginationFromButton: + + + + 6665 + + + + navigatePaginationFromButton: + + + + 6666 + @@ -18046,12 +17956,12 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 - - - - + + + + @@ -18208,57 +18118,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 - - 4686 - - - YES - - - - - - 4687 - - - - - 3969 - - - YES - - - - - - 3970 - - - YES - - - - - - 3976 - - - - - 3973 - - - YES - - - - - - 3974 - - - 4676 @@ -20941,6 +20800,48 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 + + 6647 + + + YES + + + + + + 6648 + + + + + 6650 + + + YES + + + + + + 6651 + + + + + 6653 + + + YES + + + + + + 6654 + + + @@ -21377,14 +21278,8 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 3958.IBShouldRemoveOnLegacySave 3963.IBPluginDependency 3964.IBPluginDependency - 3969.IBPluginDependency - 3970.IBPluginDependency 3971.IBPluginDependency 3972.IBPluginDependency - 3973.IBPluginDependency - 3974.IBPluginDependency - 3976.IBNumberFormatterLocalizesFormatMetadataKey - 3976.IBPluginDependency 3994.IBEditorWindowLastContentRect 3994.IBPluginDependency 3994.WindowOrigin @@ -21497,8 +21392,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 4593.IBPluginDependency 4676.IBPluginDependency 4677.IBPluginDependency - 4686.IBPluginDependency - 4687.IBPluginDependency 4741.IBPluginDependency 4741.ImportedFromIB2 4742.IBPluginDependency @@ -22220,6 +22113,15 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 663.ImportedFromIB2 6643.IBPluginDependency 6644.IBPluginDependency + 6647.IBAttributePlaceholdersKey + 6647.IBPluginDependency + 6648.IBPluginDependency + 6650.IBAttributePlaceholdersKey + 6650.IBPluginDependency + 6651.IBPluginDependency + 6653.IBAttributePlaceholdersKey + 6653.IBPluginDependency + 6654.IBPluginDependency 669.IBPluginDependency 669.ImportedFromIB2 67.ImportedFromIB2 @@ -22923,12 +22825,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 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 {{339, 92}, {269, 32}} com.apple.InterfaceBuilder.CocoaPlugin {628, 654} @@ -23049,8 +22945,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 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 @@ -23109,10 +23003,10 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{127, 306}, {944, 550}} + {{58, 306}, {944, 550}} com.apple.InterfaceBuilder.CocoaPlugin - {{127, 306}, {944, 550}} + {{58, 306}, {944, 550}} {{62, 352}, {845, 504}} @@ -24033,6 +23927,36 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + View next row of results + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + View previous page of results + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + Jump to page (⌘J) or view pagination options + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -24196,7 +24120,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 - 6644 + 6666 @@ -24967,11 +24891,12 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 addRow: copyRow: filterTable: + navigatePaginationFromButton: reloadTable: removeRow: setCompareTypes: - stepLimitRows: toggleFilterField: + togglePagination: YES @@ -24983,6 +24908,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 id id id + id @@ -24994,6 +24920,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 betweenTextField compareField contentFilterManager + contentViewPane copyButton countText fieldField @@ -25003,6 +24930,12 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 limitRowsField limitRowsStepper multipleLineEditingButton + paginationButton + paginationNextButton + paginationPageField + paginationPageStepper + paginationPreviousButton + paginationView reloadButton removeButton secondBetweenField @@ -25021,6 +24954,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 id id id + NSView id id id @@ -25030,6 +24964,12 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 id id id + NSButton + NSButton + NSTextField + NSStepper + NSButton + NSView id id id @@ -25912,14 +25852,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 NSMutableDictionary - - NSNumberFormatter - NSFormatter - - IBFrameworkSource - Foundation.framework/Headers/NSNumberFormatter.h - - NSObject @@ -26386,14 +26318,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 AppKit.framework/Headers/NSStepper.h - - NSStepperCell - NSActionCell - - IBFrameworkSource - AppKit.framework/Headers/NSStepperCell.h - - NSTabView NSView diff --git a/Interfaces/English.lproj/Preferences.xib b/Interfaces/English.lproj/Preferences.xib index e7042bfd..bbdb122f 100644 --- a/Interfaces/English.lproj/Preferences.xib +++ b/Interfaces/English.lproj/Preferences.xib @@ -12,7 +12,7 @@ YES - + YES @@ -46,19 +46,21 @@ Preferences NSWindow - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} {500, 0} - + 256 {500, 172} + + {{0, 0}, {1920, 1178}} {500, 22} - {3.40282e+38, 3.40282e+38} + {1.79769e+308, 1.79769e+308} - + 268 YES @@ -67,7 +69,6 @@ 268 {{151, 121}, {254, 26}} - YES -2076049856 @@ -405,7 +406,6 @@ 268 {{152, 214}, {209, 18}} - YES 67239424 @@ -433,7 +433,6 @@ 268 {{40, 242}, {108, 17}} - YES 68288064 @@ -447,7 +446,7 @@ controlColor 3 - MC42NjY2NjY2ODY1AA + MC42NjY2NjY2NjY3AA @@ -466,7 +465,6 @@ 268 {{151, 236}, {254, 26}} - YES -2076049856 @@ -499,7 +497,6 @@ 268 {{33, 85}, {116, 17}} - YES 68288064 @@ -516,7 +513,6 @@ 268 {{33, 127}, {116, 17}} - YES 68288064 @@ -533,7 +529,6 @@ 268 {{152, 84}, {166, 18}} - YES 67239424 @@ -556,7 +551,6 @@ 268 {{152, 62}, {181, 18}} - YES 67239424 @@ -579,7 +573,6 @@ 12 {{154, 156}, {326, 5}} - {0, 0} 67239424 @@ -610,7 +603,6 @@ 12 {{154, 108}, {326, 5}} - {0, 0} 67239424 @@ -633,7 +625,6 @@ 12 {{154, 53}, {326, 5}} - {0, 0} 67239424 @@ -656,7 +647,6 @@ 268 {{42, 23}, {106, 17}} - YES 68288064 @@ -673,7 +663,6 @@ 268 {{153, 20}, {38, 22}} - YES -1804468671 @@ -750,7 +739,6 @@ 268 {{197, 23}, {162, 17}} - YES 68288064 @@ -767,7 +755,6 @@ 268 {{151, 169}, {254, 26}} - YES -2076049856 @@ -881,7 +868,6 @@ 268 {{61, 175}, {88, 17}} - YES 68288064 @@ -898,7 +884,6 @@ 12 {{154, 204}, {326, 5}} - {0, 0} 67239424 @@ -918,12 +903,10 @@ {500, 280} - - NSView - + 268 YES @@ -1059,7 +1042,7 @@ 100 1 - 50000 + 100000 1 YES YES @@ -1083,25 +1066,29 @@ YES allowsFloats formatterBehavior + lenient locale maximum minimum numberStyle + positiveFormat roundingIncrement YES + + #,##1 - #1 - #1 + #,##1 + #,##0 @@ -1120,7 +1107,7 @@ . , - NO + YES NO NO @@ -1299,10 +1286,11 @@ {500, 259} + NSView - + 274 YES @@ -1321,7 +1309,6 @@ 292 {{62, -1}, {33, 25}} - YES 67239424 @@ -1346,7 +1333,6 @@ 292 {{0, -1}, {32, 25}} - YES 67239424 @@ -1371,7 +1357,6 @@ 292 {{31, -1}, {32, 25}} - YES 67239424 @@ -1406,7 +1391,6 @@ 4370 {198, 358} - YES @@ -1493,7 +1477,6 @@ {{1, 1}, {198, 358}} - @@ -1504,7 +1487,6 @@ -2147483392 {{183, 1}, {11, 317}} - 256 _doScroller: @@ -1515,7 +1497,6 @@ -2147483392 {{-100, -100}, {311, 15}} - 1 _doScroller: @@ -1524,7 +1505,6 @@ {{-2, 22}, {200, 360}} - 530 @@ -1549,7 +1529,6 @@ {{95, 0}, {102, 23}} - YES 130560 @@ -1568,7 +1547,6 @@ {197, 381} - NSView @@ -1581,7 +1559,6 @@ 266 {{-7, 34}, {322, 282}} - YES @@ -1933,7 +1910,6 @@ 266 {{119, 59}, {135, 19}} - YES -1804468671 @@ -1951,7 +1927,6 @@ 266 {{119, 33}, {135, 19}} - YES -1804468671 @@ -1969,7 +1944,6 @@ 266 {{119, 85}, {135, 19}} - YES -1804468671 @@ -1987,7 +1961,6 @@ 266 {{119, 7}, {135, 19}} - YES -1804468671 @@ -2006,7 +1979,6 @@ 268 {{59, 61}, {55, 14}} - YES 68288064 @@ -2023,7 +1995,6 @@ 268 {{33, 35}, {81, 14}} - YES 68288064 @@ -2040,7 +2011,6 @@ 268 {{58, 87}, {56, 14}} - YES 68288064 @@ -2057,7 +2027,6 @@ 268 {{54, 9}, {60, 14}} - YES 68288064 @@ -2074,7 +2043,6 @@ 266 {{119, 153}, {135, 19}} - YES -1804468671 @@ -2093,7 +2061,6 @@ 266 {{119, 180}, {135, 19}} - YES 343014976 @@ -2115,7 +2082,6 @@ 266 {{119, 207}, {135, 19}} - YES -1804468671 @@ -2133,7 +2099,6 @@ 266 {{119, 126}, {135, 19}} - YES -1804468671 @@ -2152,7 +2117,6 @@ 266 {{119, 234}, {135, 19}} - YES -1804468671 @@ -2170,7 +2134,6 @@ 268 {{42, 236}, {72, 14}} - YES 68288064 @@ -2187,7 +2150,6 @@ 268 {{53, 209}, {61, 14}} - YES 68288064 @@ -2204,7 +2166,6 @@ 268 {{57, 155}, {57, 14}} - YES 68288064 @@ -2221,7 +2182,6 @@ 268 {{56, 182}, {58, 14}} - YES 68288064 @@ -2238,7 +2198,6 @@ 268 {{85, 128}, {29, 14}} - YES 68288064 @@ -2253,7 +2212,6 @@ {{10, 7}, {287, 262}} - SSH @@ -2274,7 +2232,6 @@ 266 {{112, 342}, {170, 19}} - YES -1804468671 @@ -2292,7 +2249,6 @@ 268 {{68, 344}, {39, 14}} - YES 68288064 @@ -2309,7 +2265,6 @@ 266 {{109, 313}, {176, 22}} - YES -2076049856 @@ -2376,7 +2331,6 @@ 268 {{68, 318}, {39, 14}} - YES 68288064 @@ -2391,24 +2345,20 @@ {{198, 0}, {302, 381}} - NSView {500, 381} - YES 2 {500, 381} - - NSView - + 268 YES @@ -2417,7 +2367,6 @@ 268 {{152, 173}, {187, 18}} - YES 67239424 @@ -2440,7 +2389,6 @@ 12 {{154, 136}, {334, 5}} - {0, 0} 67239424 @@ -2463,7 +2411,6 @@ 268 {{152, 150}, {261, 18}} - YES 67239424 @@ -2486,7 +2433,6 @@ 268 {{152, 110}, {189, 18}} - YES 67239424 @@ -2509,7 +2455,6 @@ 268 {{180, 87}, {77, 18}} - YES 67239424 @@ -2532,7 +2477,6 @@ 268 {{180, 41}, {123, 18}} - YES 67239424 @@ -2555,7 +2499,6 @@ 268 {{180, 64}, {154, 18}} - YES 67239424 @@ -2578,7 +2521,6 @@ 268 {{180, 18}, {63, 18}} - YES 67239424 @@ -2598,12 +2540,10 @@ {500, 209} - - NSView - + 268 YES @@ -2612,7 +2552,6 @@ 256 {{152, 117}, {225, 18}} - YES 67239424 @@ -2634,7 +2573,6 @@ 268 {{148, 12}, {111, 32}} - YES 67239424 @@ -2655,7 +2593,6 @@ 256 {{73, 49}, {75, 17}} - YES 67239424 @@ -2672,7 +2609,6 @@ 256 {{151, 49}, {254, 17}} - YES 67239424 @@ -2730,7 +2666,6 @@ AQAAAAA 12 {{154, 72}, {326, 5}} - {0, 0} 67239424 @@ -2753,7 +2688,6 @@ AQAAAAA 256 {{75, 93}, {73, 17}} - YES 67239424 @@ -2770,7 +2704,6 @@ AQAAAAA 268 {{151, 87}, {150, 26}} - YES -2076049856 @@ -2837,12 +2770,10 @@ AQAAAAA {500, 153} - - NSView - + 268 YES @@ -2851,7 +2782,6 @@ AQAAAAA 268 {{12, 56}, {137, 17}} - YES 67239488 @@ -2868,7 +2798,6 @@ AQAAAAA 268 {{152, 18}, {166, 18}} - YES -2080244224 @@ -2891,7 +2820,6 @@ AQAAAAA 268 {{154, 53}, {50, 22}} - YES -1804468671 @@ -2954,7 +2882,6 @@ AQAAAAA 268 {{209, 56}, {56, 17}} - YES 67239488 @@ -2971,7 +2898,6 @@ AQAAAAA 12 {{154, 42}, {326, 5}} - {0, 0} 67239424 @@ -2991,8 +2917,6 @@ AQAAAAA {500, 93} - - NSView @@ -3012,6 +2936,7 @@ AQAAAAA {{154, 199}, {44, 23}} + YES YES @@ -3031,6 +2956,7 @@ AQAAAAA {{154, 228}, {44, 23}} + YES YES @@ -3050,6 +2976,7 @@ AQAAAAA {{154, 141}, {44, 23}} + YES YES @@ -3069,6 +2996,7 @@ AQAAAAA {{154, 112}, {44, 23}} + YES YES @@ -3088,6 +3016,7 @@ AQAAAAA {{154, 286}, {44, 23}} + YES YES @@ -3107,6 +3036,7 @@ AQAAAAA {{154, 170}, {44, 23}} + YES YES @@ -3126,6 +3056,7 @@ AQAAAAA {{154, 83}, {44, 23}} + YES YES @@ -3145,6 +3076,7 @@ AQAAAAA {{154, 54}, {44, 23}} + YES YES @@ -3164,6 +3096,7 @@ AQAAAAA {{154, 315}, {44, 23}} + YES YES @@ -3183,6 +3116,7 @@ AQAAAAA {{154, 257}, {44, 23}} + YES 1 @@ -3194,6 +3128,7 @@ AQAAAAA 268 {{86, 202}, {63, 17}} + YES 68288064 @@ -3210,6 +3145,7 @@ AQAAAAA 268 {{88, 173}, {61, 17}} + YES 68288064 @@ -3226,6 +3162,7 @@ AQAAAAA 268 {{79, 231}, {70, 17}} + YES 68288064 @@ -3242,6 +3179,7 @@ AQAAAAA 268 {{89, 86}, {60, 17}} + YES 68288064 @@ -3258,6 +3196,7 @@ AQAAAAA 268 {{23, 58}, {125, 17}} + YES 68288064 @@ -3274,6 +3213,7 @@ AQAAAAA 268 {{102, 144}, {47, 17}} + YES 68288064 @@ -3290,6 +3230,7 @@ AQAAAAA 268 {{112, 318}, {37, 17}} + YES 68288064 @@ -3306,6 +3247,7 @@ AQAAAAA 268 {{46, 115}, {103, 17}} + YES 68288064 @@ -3322,6 +3264,7 @@ AQAAAAA 268 {{66, 289}, {83, 17}} + YES 68288064 @@ -3338,6 +3281,7 @@ AQAAAAA 268 {{113, 357}, {36, 17}} + YES 68288064 @@ -3354,6 +3298,7 @@ AQAAAAA 268 {{73, 12}, {131, 32}} + YES -2080244224 @@ -3374,6 +3319,7 @@ AQAAAAA 268 {{396, 347}, {90, 32}} + YES 67239424 @@ -3394,6 +3340,7 @@ AQAAAAA 268 {{154, 355}, {240, 19}} + YES -2076049856 @@ -3411,6 +3358,7 @@ AQAAAAA 268 {{107, 260}, {42, 17}} + YES 605158976 @@ -3427,6 +3375,7 @@ AQAAAAA 268 {{257, 317}, {126, 18}} + YES -2080244224 @@ -3449,6 +3398,7 @@ AQAAAAA 268 {{257, 288}, {150, 18}} + YES -2080244224 @@ -3471,6 +3421,7 @@ AQAAAAA 268 {{257, 230}, {179, 18}} + YES 67239424 @@ -3493,6 +3444,7 @@ AQAAAAA 268 {{257, 259}, {185, 18}} + YES -2080244224 @@ -3515,6 +3467,7 @@ AQAAAAA 268 {{257, 173}, {185, 18}} + YES -2080244224 @@ -3537,6 +3490,7 @@ AQAAAAA -2147483380 {{257, 144}, {197, 18}} + YES -1543373312 @@ -3559,6 +3513,7 @@ AQAAAAA 268 {{357, 205}, {29, 19}} + YES -1538130368 @@ -3632,6 +3587,7 @@ AQAAAAA 268 {{298, 207}, {54, 14}} + YES 605158976 @@ -3648,6 +3604,7 @@ AQAAAAA 268 {{392, 203}, {15, 22}} + YES 604896800 @@ -3666,6 +3623,7 @@ AQAAAAA 268 {{410, 207}, {27, 14}} + YES 605158976 @@ -3682,6 +3640,7 @@ AQAAAAA 12 {{154, 344}, {326, 5}} + {0, 0} 67239424 @@ -3702,6 +3661,7 @@ AQAAAAA {500, 395} + NSView @@ -8992,7 +8952,7 @@ AQAAAAA com.apple.InterfaceBuilder.CocoaPlugin - {{387, 154}, {500, 259}} + {{318, 154}, {500, 259}} com.apple.InterfaceBuilder.CocoaPlugin YES diff --git a/Resources/Images/button_left.png b/Resources/Images/button_left.png new file mode 100644 index 00000000..e7a16e15 Binary files /dev/null and b/Resources/Images/button_left.png differ diff --git a/Resources/Images/button_pagination.png b/Resources/Images/button_pagination.png new file mode 100644 index 00000000..89c612df Binary files /dev/null and b/Resources/Images/button_pagination.png differ diff --git a/Resources/Images/button_right.png b/Resources/Images/button_right.png new file mode 100644 index 00000000..98ba5931 Binary files /dev/null and b/Resources/Images/button_right.png differ diff --git a/Source/SPHistoryController.m b/Source/SPHistoryController.m index 6c2683d0..7644f97f 100644 --- a/Source/SPHistoryController.m +++ b/Source/SPHistoryController.m @@ -188,7 +188,7 @@ unsigned int theView = [self currentlySelectedView]; NSString *contentSortCol = [tableContentInstance sortColumnName]; BOOL contentSortColIsAsc = [tableContentInstance sortColumnIsAscending]; - unsigned int contentLimitStartPosition = [tableContentInstance limitStart]; + unsigned int contentPageNumber = [tableContentInstance pageNumber]; NSIndexSet *contentSelectedIndexSet = [tableContentInstance selectedRowIndexes]; NSRect contentViewport = [tableContentInstance viewport]; NSDictionary *contentFilter = [tableContentInstance filterSettings]; @@ -232,7 +232,7 @@ theTable, @"table", [NSNumber numberWithInt:theView], @"view", [NSNumber numberWithBool:contentSortColIsAsc], @"contentSortColIsAsc", - [NSNumber numberWithInt:contentLimitStartPosition], @"contentLimitStartPosition", + [NSNumber numberWithInt:contentPageNumber], @"contentPageNumber", [NSValue valueWithRect:contentViewport], @"contentViewport", nil]; if (contentSortCol) [newEntry setObject:contentSortCol forKey:@"contentSortCol"]; @@ -288,7 +288,7 @@ // Set table content details for restore [tableContentInstance setSortColumnNameToRestore:[historyEntry objectForKey:@"contentSortCol"] isAscending:[[historyEntry objectForKey:@"contentSortCol"] boolValue]]; - [tableContentInstance setLimitStartToRestore:[[historyEntry objectForKey:@"contentLimitStartPosition"] intValue]]; + [tableContentInstance setPageToRestore:[[historyEntry objectForKey:@"contentPageNumber"] intValue]]; [tableContentInstance setSelectedRowIndexesToRestore:[historyEntry objectForKey:@"contentSelectedIndexSet"]]; [tableContentInstance setViewportToRestore:[[historyEntry objectForKey:@"contentViewport"] rectValue]]; [tableContentInstance setFiltersToRestore:[historyEntry objectForKey:@"contentFilter"]]; @@ -415,14 +415,24 @@ if (![theEntry objectForKey:@"table"] || ![[theEntry objectForKey:@"table"] length]) return theName; [theName appendFormat:@"/%@", [theEntry objectForKey:@"table"]]; - if (![theEntry objectForKey:@"contentFilter"]) return theName; - NSDictionary *filterSettings = [theEntry objectForKey:@"contentFilter"]; - if (![filterSettings objectForKey:@"filterField"]) return theName; + if ([theEntry objectForKey:@"contentFilter"]) { + NSDictionary *filterSettings = [theEntry objectForKey:@"contentFilter"]; + if ([filterSettings objectForKey:@"filterField"]) { + if([filterSettings objectForKey:@"menuLabel"]) { + theName = [NSString stringWithFormat:NSLocalizedString(@"%@ (Filtered by %@)", @"History item filtered by values label"), + theName, [filterSettings objectForKey:@"menuLabel"]]; + } + } + } - if([filterSettings objectForKey:@"menuLabel"]) - return [NSString stringWithFormat:NSLocalizedString(@"%@ (Filtered by %@)", @"History item filtered by values label"), - theName, [filterSettings objectForKey:@"menuLabel"]]; + if ([theEntry objectForKey:@"contentPageNumber"]) { + NSUInteger pageNumber = [[theEntry objectForKey:@"contentPageNumber"] unsignedIntValue]; + if (pageNumber > 1) { + theName = [NSString stringWithFormat:NSLocalizedString(@"%@ (Page %i)", @"History item with page number label"), + theName, pageNumber]; + } + } return theName; } diff --git a/Source/TableContent.h b/Source/TableContent.h index d0cc0ec3..e3a9bd50 100644 --- a/Source/TableContent.h +++ b/Source/TableContent.h @@ -56,9 +56,19 @@ IBOutlet id firstBetweenField; IBOutlet id secondBetweenField; IBOutlet id betweenTextField; + + IBOutlet NSButton *paginationPreviousButton; + IBOutlet NSButton *paginationButton; + IBOutlet NSButton *paginationNextButton; + IBOutlet NSView *contentViewPane; + IBOutlet NSView *paginationView; + IBOutlet NSTextField *paginationPageField; + IBOutlet NSStepper *paginationPageStepper; MCPConnection *mySQLConnection; - + + BOOL _mainNibLoaded; + NSString *selectedTable, *usedQuery; NSMutableArray *tableValues, *dataColumns, *keys, *oldRow; NSUInteger tableRowsCount, previousTableRowsCount; @@ -73,14 +83,17 @@ NSMutableDictionary *numberOfDefaultFilters; NSUInteger lastSelectedContentFilterIndex; id contentFilterManager; + NSUInteger contentPage; BOOL sortColumnToRestoreIsAsc; BOOL tableRowsSelectable; NSString *sortColumnToRestore; - unsigned int limitStartPositionToRestore; + unsigned int pageToRestore; NSIndexSet *selectionIndexToRestore; NSRect selectionViewportToRestore; NSString *filterFieldToRestore, *filterComparisonToRestore, *filterValueToRestore, *firstBetweenValueToRestore, *secondBetweenValueToRestore; + + int paginationViewHeight; } // Table loading methods and information @@ -98,6 +111,12 @@ - (NSString *) usedQuery; - (void) setUsedQuery:(NSString *)query; +// Pagination +- (IBAction) navigatePaginationFromButton:(id)sender; +- (IBAction) togglePagination:(id)sender; +- (void) setPaginationViewVisibility:(BOOL)makeVisible; +- (void) updatePaginationState; + // Edit methods - (IBAction)addRow:(id)sender; - (IBAction)copyRow:(id)sender; @@ -115,7 +134,6 @@ - (void)setConnection:(MCPConnection *)theConnection; - (void)clickLinkArrow:(SPTextAndLinkCell *)theArrowCell; - (IBAction)setCompareTypes:(id)sender; -- (IBAction)stepLimitRows:(id)sender; - (void)processResultIntoDataStorage:(MCPStreamingResult *)theResult approximateRowCount:(long)targetRowCount; - (BOOL)addRowToDB; - (NSString *)argumentForRow:(int)row; @@ -130,12 +148,12 @@ // Retrieving and setting table state - (NSString *) sortColumnName; - (BOOL) sortColumnIsAscending; -- (unsigned int) limitStart; +- (unsigned int) pageNumber; - (NSIndexSet *) selectedRowIndexes; - (NSRect) viewport; - (NSDictionary *) filterSettings; - (void) setSortColumnNameToRestore:(NSString *)theSortColumnName isAscending:(BOOL)isAscending; -- (void) setLimitStartToRestore:(unsigned int)theLimitStart; +- (void) setPageToRestore:(unsigned int)thePage; - (void) setSelectedRowIndexesToRestore:(NSIndexSet *)theIndexSet; - (void) setViewportToRestore:(NSRect)theViewport; - (void) setFiltersToRestore:(NSDictionary *)filterSettings; diff --git a/Source/TableContent.m b/Source/TableContent.m index 9d5268c8..d3988cef 100644 --- a/Source/TableContent.m +++ b/Source/TableContent.m @@ -58,7 +58,8 @@ - (id)init { if ((self == [super init])) { - + _mainNibLoaded = NO; + tableValues = [[NSMutableArray alloc] init]; tableRowsCount = 0; previousTableRowsCount = 0; @@ -71,10 +72,11 @@ keys = nil; currentlyEditingRow = -1; + contentPage = 1; sortColumnToRestore = nil; sortColumnToRestoreIsAsc = YES; - limitStartPositionToRestore = 1; + pageToRestore = 1; selectionIndexToRestore = nil; selectionViewportToRestore = NSZeroRect; filterFieldToRestore = nil; @@ -125,8 +127,24 @@ */ - (void)awakeFromNib { + if (_mainNibLoaded) return; + _mainNibLoaded = YES; + // Set the table content view's vertical gridlines if required [tableContentView setGridStyleMask:([prefs boolForKey:SPDisplayTableViewVerticalGridlines]) ? NSTableViewSolidVerticalGridLineMask : NSTableViewGridNone]; + + // Add the pagination view to the content area with ourselves as the owner + if (![NSBundle loadNibNamed:@"ContentPaginationView" owner:self]) { + NSLog(@"Content pagination nib could not be loaded; pagination will not function correctly."); + } + NSRect paginationViewFrame = [paginationView frame]; + NSRect paginationButtonFrame = [paginationButton frame]; + paginationViewHeight = paginationViewFrame.size.height; + paginationViewFrame.origin.x = paginationButtonFrame.origin.x + paginationButtonFrame.size.width - paginationViewFrame.size.width; + paginationViewFrame.origin.y = paginationButtonFrame.origin.y + paginationButtonFrame.size.height - 2; + paginationViewFrame.size.height = 0; + [paginationView setFrame:paginationViewFrame]; + [contentViewPane addSubview:paginationView]; // Add observers for document task activity [[NSNotificationCenter defaultCenter] addObserver:self @@ -154,6 +172,7 @@ NSDictionary *columnDefinition; NSTableColumn *theCol; BOOL enableInteraction = ![[tableDocumentInstance selectedToolbarItemIdentifier] isEqualToString:MAIN_TOOLBAR_TABLE_CONTENT] || ![tableDocumentInstance isWorking]; + [self performSelectorOnMainThread:@selector(setPaginationViewVisibility:) withObject:nil waitUntilDone:NO]; // Abort the reload if the user is still editing a row if ( isEditingRow ) @@ -168,6 +187,8 @@ } else { selectedTable = aTable; previousTableRowsCount = 0; + contentPage = 1; + [paginationPageField setStringValue:@"1"]; // Clear the selection [tableContentView deselectAll:self]; @@ -227,11 +248,11 @@ [secondBetweenField setHidden:YES]; [betweenTextField setHidden:YES]; - // Empty and disable the limit field - [limitRowsField setStringValue:@""]; - [limitRowsField setEnabled:NO]; - [limitRowsButton setEnabled:NO]; - [limitRowsStepper setEnabled:NO]; + // Disable pagination + [paginationPreviousButton setEnabled:NO]; + [paginationButton setEnabled:NO]; + [paginationButton setTitle:@""]; + [paginationNextButton setEnabled:NO]; // Disable table action buttons [addButton setEnabled:NO]; @@ -409,27 +430,12 @@ } } + // Restore page number if limiting is set + if ([prefs boolForKey:SPLimitResults]) contentPage = pageToRestore; + // Restore first responder [tableWindow performSelectorOnMainThread:@selector(makeFirstResponder:) withObject:currentFirstResponder waitUntilDone:NO]; - // Enable or disable the limit fields according to preference setting - if ( [prefs boolForKey:SPLimitResults] ) { - - // Preserve the limit field - if this is beyond the current number of rows, - // reloadData will reset as necessary. - if (limitStartPositionToRestore < 1) limitStartPositionToRestore = 1; - [limitRowsField setStringValue:[NSString stringWithFormat:@"%u", limitStartPositionToRestore]]; - - [limitRowsField setEnabled:YES]; - [limitRowsButton setEnabled:YES]; - [limitRowsStepper setEnabled:YES]; - } else { - [limitRowsField setEnabled:NO]; - [limitRowsButton setEnabled:NO]; - [limitRowsStepper setEnabled:NO]; - [limitRowsField setStringValue:@""]; - } - // Set the state of the table buttons [addButton setEnabled:enableInteraction]; [copyButton setEnabled:NO]; @@ -518,22 +524,23 @@ // Check to see if a limit needs to be applied if ([prefs boolForKey:SPLimitResults]) { - // Ensure the limit isn't negative - if ([limitRowsField intValue] <= 0) { - [limitRowsField setStringValue:@"1"]; - } + // Ensure the page supplied is within the appropriate limits + if (contentPage <= 0) + contentPage = 1; + else if (contentPage > 1 && (contentPage - 1) * [prefs integerForKey:SPLimitResultsValue] >= maxNumRows) + contentPage = ceil((float)maxNumRows / [prefs floatForKey:SPLimitResultsValue]); - // If the result set is being limited, take a copy of the string to allow resetting limit + // If the result set is from a late page, take a copy of the string to allow resetting limit // if no results are found - if ([limitRowsField intValue] > 1) { + if (contentPage > 1) { queryStringBeforeLimit = [NSString stringWithString:queryString]; } // Append the limit settings - [queryString appendFormat:@" LIMIT %d,%d", [limitRowsField intValue]-1, [prefs integerForKey:SPLimitResultsValue]]; + [queryString appendFormat:@" LIMIT %d,%d", (contentPage-1)*[prefs integerForKey:SPLimitResultsValue], [prefs integerForKey:SPLimitResultsValue]]; // Update the approximate count of the rows to load - rowsToLoad = rowsToLoad - ([limitRowsField intValue]-1); + rowsToLoad = rowsToLoad - (contentPage-1)*[prefs integerForKey:SPLimitResultsValue]; if (rowsToLoad > [prefs integerForKey:SPLimitResultsValue]) rowsToLoad = [prefs integerForKey:SPLimitResultsValue]; } @@ -547,9 +554,9 @@ [self processResultIntoDataStorage:streamingResult approximateRowCount:rowsToLoad]; [streamingResult release]; - // If the result is empty, and a limit is active, reset the limit + // If the result is empty, and a late page is selected, reset the page if ([prefs boolForKey:SPLimitResults] && queryStringBeforeLimit && !tableRowsCount && ![mySQLConnection queryCancelled]) { - [limitRowsField setStringValue:@"1"]; + contentPage = 1; queryString = [NSMutableString stringWithFormat:@"%@ LIMIT 0,%d", queryStringBeforeLimit, [prefs integerForKey:SPLimitResultsValue]]; [self setUsedQuery:queryString]; streamingResult = [mySQLConnection streamingQueryString:queryString]; @@ -566,7 +573,7 @@ [tableDocumentInstance disableTaskCancellation]; if ([prefs boolForKey:SPLimitResults] - && ([limitRowsField intValue] > 1 + && (contentPage > 1 || tableRowsCount == [prefs integerForKey:SPLimitResultsValue])) { isLimited = YES; @@ -579,7 +586,10 @@ // Set the filter text [self updateCountText]; - + + // Update pagination + [self updatePaginationState]; + // Notify listenters that the query has finished [[NSNotificationCenter defaultCenter] postNotificationName:@"SMySQLQueryHasBeenPerformed" object:tableDocumentInstance]; } @@ -836,35 +846,43 @@ { NSString *rowString; NSMutableString *countString = [NSMutableString string]; + NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease]; + [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; + + // Set up a couple of common strings + NSString *tableCountString = [numberFormatter stringFromNumber:[NSNumber numberWithUnsignedInteger:tableRowsCount]]; + NSString *maxRowsString = [numberFormatter stringFromNumber:[NSNumber numberWithUnsignedInteger:maxNumRows]]; // If the result is partial due to an error or query cancellation, show a very basic count if (isInterruptedLoad) { if (tableRowsCount == 1) - [countString appendFormat:NSLocalizedString(@"%d row in partial load", @"text showing a single row a partially loaded result"), tableRowsCount]; + [countString appendFormat:NSLocalizedString(@"%@ row in partial load", @"text showing a single row a partially loaded result"), tableCountString]; else - [countString appendFormat:NSLocalizedString(@"%d rows in partial load", @"text showing how many rows are in a partially loaded result"), tableRowsCount]; + [countString appendFormat:NSLocalizedString(@"%@ rows in partial load", @"text showing how many rows are in a partially loaded result"), tableCountString]; // If no filter or limit is active, show just the count of rows in the table } else if (!isFiltered && !isLimited) { if (tableRowsCount == 1) - [countString appendFormat:NSLocalizedString(@"%d row in table", @"text showing a single row in the result"), tableRowsCount]; + [countString appendFormat:NSLocalizedString(@"%@ row in table", @"text showing a single row in the result"), tableCountString]; else - [countString appendFormat:NSLocalizedString(@"%d rows in table", @"text showing how many rows are in the result"), tableRowsCount]; + [countString appendFormat:NSLocalizedString(@"%@ rows in table", @"text showing how many rows are in the result"), tableCountString]; // If a limit is active, display a string suggesting a limit is active } else if (!isFiltered && isLimited) { - [countString appendFormat:NSLocalizedString(@"Rows %d-%d of %@%d from table", @"text showing how many rows are in the limited result"), [limitRowsField intValue], [limitRowsField intValue]+tableRowsCount-1, maxNumRowsIsEstimate?@"~":@"", maxNumRows]; + NSUInteger limitStart = (contentPage-1)*[prefs integerForKey:SPLimitResultsValue] + 1; + [countString appendFormat:NSLocalizedString(@"Rows %@ - %@ of %@%@ from table", @"text showing how many rows are in the limited result"), [numberFormatter stringFromNumber:[NSNumber numberWithUnsignedInteger:limitStart]], [numberFormatter stringFromNumber:[NSNumber numberWithUnsignedInteger:(limitStart+tableRowsCount-1)]], maxNumRowsIsEstimate?@"~":@"", maxRowsString]; // If just a filter is active, show a count and an indication a filter is active } else if (isFiltered && !isLimited) { if (tableRowsCount == 1) - [countString appendFormat:NSLocalizedString(@"%d row of %@%d matches filter", @"text showing how a single rows matched filter"), tableRowsCount, maxNumRowsIsEstimate?@"~":@"", maxNumRows]; + [countString appendFormat:NSLocalizedString(@"%@ row of %@%@ matches filter", @"text showing how a single rows matched filter"), tableCountString, maxNumRowsIsEstimate?@"~":@"", maxRowsString]; else - [countString appendFormat:NSLocalizedString(@"%d rows of %@%d match filter", @"text showing how many rows matched filter"), tableRowsCount, maxNumRowsIsEstimate?@"~":@"", maxNumRows]; + [countString appendFormat:NSLocalizedString(@"%@ rows of %@%@ match filter", @"text showing how many rows matched filter"), tableCountString, maxNumRowsIsEstimate?@"~":@"", maxRowsString]; // If both a filter and limit is active, display full string } else { - [countString appendFormat:NSLocalizedString(@"Rows %d-%d from filtered matches", @"text showing how many rows are in the limited filter match"), [limitRowsField intValue], [limitRowsField intValue]+tableRowsCount-1]; + NSUInteger limitStart = (contentPage-1)*[prefs integerForKey:SPLimitResultsValue] + 1; + [countString appendFormat:NSLocalizedString(@"Rows %@ - %@ from filtered matches", @"text showing how many rows are in the limited filter match"), [numberFormatter stringFromNumber:[NSNumber numberWithUnsignedInteger:limitStart]], [numberFormatter stringFromNumber:[NSNumber numberWithUnsignedInteger:(limitStart+tableRowsCount-1)]]]; } // If rows are selected, append selection count @@ -874,7 +892,7 @@ rowString = [NSString stringWithString:NSLocalizedString(@"row", @"singular word for row")]; else rowString = [NSString stringWithString:NSLocalizedString(@"rows", @"plural word for rows")]; - [countString appendFormat:NSLocalizedString(@"%d %@ selected", @"text showing how many rows are selected"), [tableContentView numberOfSelectedRows], rowString]; + [countString appendFormat:NSLocalizedString(@"%@ %@ selected", @"text showing how many rows are selected"), [numberFormatter stringFromNumber:[NSNumber numberWithInteger:[tableContentView numberOfSelectedRows]]], rowString]; } [countText setStringValue:countString]; @@ -927,6 +945,7 @@ - (IBAction)filterTable:(id)sender { if ([tableDocumentInstance isWorking]) return; + [self setPaginationViewVisibility:FALSE]; [tableDocumentInstance startTaskWithDescription:NSLocalizedString(@"Filtering table...", @"Filtering table task description")]; if ([NSThread isMainThread]) { [NSThread detachNewThreadSelector:@selector(filterTableTask) toTarget:self withObject:nil]; @@ -944,16 +963,13 @@ // Update history [spHistoryControllerInstance updateHistoryEntries]; - // Update negative limits - if ([limitRowsField intValue] <= 0) { - [limitRowsField setStringValue:@"1"]; - } - - // If limitRowsField > number of total table rows show the last limitRowsValue rows - if ([prefs boolForKey:SPLimitResults] && [limitRowsField intValue] >= maxNumRows) { - NSUInteger newLimit = maxNumRows - [prefs integerForKey:SPLimitResultsValue]; - [limitRowsField setStringValue:[[NSNumber numberWithInt:(newLimit<1)?1:newLimit] stringValue]]; - } + // Select the correct pagination value + if (![prefs boolForKey:SPLimitResults] || [paginationPageField integerValue] <= 0) + contentPage = 1; + else if (([paginationPageField integerValue] - 1) * [prefs integerForKey:SPLimitResultsValue] >= maxNumRows) + contentPage = ceil((float)maxNumRows / [prefs floatForKey:SPLimitResultsValue]); + else + contentPage = [paginationPageField integerValue]; // Reset and reload data using the new filter settings previousTableRowsCount = 0; @@ -1031,6 +1047,111 @@ usedQuery = [[NSString alloc] initWithString:query]; } +#pragma mark - +#pragma mark Pagination + +/** + * Move the pagination backwards or forwards one page + */ +- (IBAction) navigatePaginationFromButton:(id)sender +{ + if (sender == paginationPreviousButton) { + if (contentPage <= 1) return; + [paginationPageField setIntValue:(contentPage - 1)]; + [self filterTable:sender]; + } else if (sender == paginationNextButton) { + if (contentPage * [prefs integerForKey:SPLimitResultsValue] >= maxNumRows) return; + [paginationPageField setIntValue:(contentPage + 1)]; + [self filterTable:sender]; + } +} + +/** + * When the Pagination button is pressed, show or hide the pagination + * layer depending on the current state. + */ +- (IBAction) togglePagination:(id)sender +{ + if ([sender state] == NSOnState) [self setPaginationViewVisibility:YES]; + else [self setPaginationViewVisibility:NO]; +} + +/** + * Show or hide the pagination layer, also changing the first responder as appropriate. + */ +- (void) setPaginationViewVisibility:(BOOL)makeVisible +{ + NSRect paginationViewFrame = [paginationView frame]; + + if (makeVisible) { + if (paginationViewFrame.size.height == paginationViewHeight) return; + paginationViewFrame.size.height = paginationViewHeight; + [paginationButton setState:NSOnState]; + [tableWindow makeFirstResponder:paginationPageField]; + } else { + if (paginationViewFrame.size.height == 0) return; + paginationViewFrame.size.height = 0; + [paginationButton setState:NSOffState]; + if ([tableWindow firstResponder] == paginationPageField + || ([[tableWindow firstResponder] respondsToSelector:@selector(superview)] + && [(id)[tableWindow firstResponder] superview] + && [[(id)[tableWindow firstResponder] superview] respondsToSelector:@selector(superview)] + && [[(id)[tableWindow firstResponder] superview] superview] == paginationPageField)) + { + [tableWindow makeFirstResponder:nil]; + } + } + + [[paginationView animator] setFrame:paginationViewFrame]; +} + +/** + * Update the state of the pagination buttons and text. + */ +- (void) updatePaginationState +{ + NSUInteger maxPage = ceil((float)maxNumRows / [prefs floatForKey:SPLimitResultsValue]); + if (isFiltered && isLimited && tableRowsCount < [prefs integerForKey:SPLimitResultsValue]) { + maxPage = contentPage; + } + BOOL enabledMode = ![tableDocumentInstance isWorking]; + + NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease]; + [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; + + // Set up the previous page button + if ([prefs boolForKey:SPLimitResults] && contentPage > 1) + [paginationPreviousButton setEnabled:enabledMode]; + else + [paginationPreviousButton setEnabled:NO]; + + // Set up the next page button + if ([prefs boolForKey:SPLimitResults] && contentPage < maxPage) + [paginationNextButton setEnabled:enabledMode]; + else + [paginationNextButton setEnabled:NO]; + + // As long as a table is selected (which it will be if this is called), enable pagination detail button + [paginationButton setEnabled:enabledMode]; + + // Update the pagination button text + if ([prefs boolForKey:SPLimitResults]) { + if (isFiltered) { + [paginationButton setTitle:[NSString stringWithFormat:NSLocalizedString(@"Page %@", @"Filtered pagination button status text"), [numberFormatter stringFromNumber:[NSNumber numberWithUnsignedInteger:contentPage]]]]; + } else { + [paginationButton setTitle:[NSString stringWithFormat:NSLocalizedString(@"Page %@ of %@", @"Pagination button status text"), [numberFormatter stringFromNumber:[NSNumber numberWithUnsignedInteger:contentPage]], [numberFormatter stringFromNumber:[NSNumber numberWithUnsignedInteger:maxPage]]]]; + } + } else { + [paginationButton setTitle:NSLocalizedString(@"Pagination disabled", @"Pagination text shown when LIMIT is off")]; + } + + // Set the values and maximums for the text field and associated pager + [paginationPageField setStringValue:[numberFormatter stringFromNumber:[NSNumber numberWithUnsignedInteger:contentPage]]]; + [[paginationPageField formatter] setMaximum:[NSNumber numberWithUnsignedInteger:maxPage]]; + [paginationPageStepper setIntValue:contentPage]; + [paginationPageStepper setMaxValue:maxPage]; +} + #pragma mark - #pragma mark Edit methods @@ -1281,12 +1402,6 @@ mySQLConnection = theConnection; [tableContentView setVerticalMotionCanBeginDrag:NO]; - - [limitRowsStepper setEnabled:NO]; - - if ( ![prefs boolForKey:SPLimitResults] ) { - [limitRowsField setStringValue:@""]; - } } /** @@ -1491,25 +1606,6 @@ contextInfo:nil]; } -- (IBAction)stepLimitRows:(id)sender -/* - steps the start row up or down (+/- limitRowsValue) - */ -{ - if ( [limitRowsStepper intValue] > 0 ) { - NSInteger newStep = [limitRowsField intValue]+[prefs integerForKey:SPLimitResultsValue]; - // if newStep > the total number of rows in the current table retain the old value - [limitRowsField setIntValue:(newStep>maxNumRows)?[limitRowsField intValue]:newStep]; - } else { - if ( ([limitRowsField intValue]-[prefs integerForKey:SPLimitResultsValue]) < 1 ) { - [limitRowsField setIntValue:1]; - } else { - [limitRowsField setIntValue:[limitRowsField intValue]-[prefs integerForKey:SPLimitResultsValue]]; - } - } - [limitRowsStepper setIntValue:0]; -} - /* * Tries to write a new row to the database. * Returns YES if row is written to database, otherwise NO; also returns YES if no row @@ -2163,11 +2259,11 @@ } /** - * Provide a getter for the LIMIT position + * Provide a getter for the page number */ -- (unsigned int) limitStart +- (unsigned int) pageNumber { - return [limitRowsField intValue]; + return contentPage; } /** @@ -2214,11 +2310,11 @@ } /** - * Sets the value for the limit start position to use on next table load + * Sets the value for the page number to use on next table load */ -- (void) setLimitStartToRestore:(unsigned int)theLimitStart +- (void) setPageToRestore:(unsigned int)thePage { - limitStartPositionToRestore = theLimitStart; + pageToRestore = thePage; } /** @@ -2284,7 +2380,7 @@ - (void) storeCurrentDetailsForRestoration { [self setSortColumnNameToRestore:[self sortColumnName] isAscending:[self sortColumnIsAscending]]; - [self setLimitStartToRestore:[self limitStart]]; + [self setPageToRestore:[self pageNumber]]; [self setSelectedRowIndexesToRestore:[self selectedRowIndexes]]; [self setViewportToRestore:[self viewport]]; [self setFiltersToRestore:[self filterSettings]]; @@ -2296,7 +2392,7 @@ - (void) clearDetailsToRestore { [self setSortColumnNameToRestore:nil isAscending:YES]; - [self setLimitStartToRestore:1]; + [self setPageToRestore:1]; [self setSelectedRowIndexesToRestore:nil]; [self setViewportToRestore:NSZeroRect]; [self setFiltersToRestore:nil]; @@ -2352,9 +2448,9 @@ if (checkStatusCount) { NSInteger foundMaxRows; if ([prefs boolForKey:SPLimitResults]) { - foundMaxRows = [limitRowsField intValue] - 1 + tableRowsCount; + foundMaxRows = ((contentPage - 1) * [prefs integerForKey:SPLimitResultsValue]) + tableRowsCount; if (foundMaxRows > maxNumRows) { - if (foundMaxRows == [limitRowsField intValue] - 1 + [prefs integerForKey:SPLimitResultsValue]) { + if (tableRowsCount == [prefs integerForKey:SPLimitResultsValue]) { maxNumRows = foundMaxRows + 1; maxNumRowsIsEstimate = YES; } else { @@ -2439,7 +2535,7 @@ NSUInteger columnIndex = [[aTableColumn identifier] intValue]; if (rowIndex >= tableRowsCount) return @"..."; NSMutableArray *rowData = NSArrayObjectAtIndex(tableValues, rowIndex); - if (columnIndex >= [rowData count]) return @"..."; + if (rowData && columnIndex >= [rowData count]) return @"..."; id theValue = NSArrayObjectAtIndex(rowData, columnIndex); @@ -2471,7 +2567,7 @@ return; } NSMutableArray *rowData = NSArrayObjectAtIndex(tableValues, rowIndex); - if (columnIndex >= [rowData count]) { + if (!rowData || columnIndex >= [rowData count]) { [cell setTextColor:[NSColor lightGrayColor]]; return; } @@ -2801,6 +2897,9 @@ [reloadButton setEnabled:NO]; [filterButton setEnabled:NO]; tableRowsSelectable = NO; + [paginationPreviousButton setEnabled:NO]; + [paginationNextButton setEnabled:NO]; + [paginationButton setEnabled:NO]; } /** @@ -2813,12 +2912,15 @@ if (![[tableDocumentInstance selectedToolbarItemIdentifier] isEqualToString:MAIN_TOOLBAR_TABLE_CONTENT]) return; - if ( ![[[tableDataInstance statusValues] objectForKey:@"Rows"] isNSNull] && selectedTable && [selectedTable length] && [tableDataInstance tableEncoding]) [addButton setEnabled:YES]; + if ( ![[[tableDataInstance statusValues] objectForKey:@"Rows"] isNSNull] && selectedTable && [selectedTable length] && [tableDataInstance tableEncoding]) { + [addButton setEnabled:YES]; + [self updatePaginationState]; + [reloadButton setEnabled:YES]; + } if ([tableContentView numberOfSelectedRows] > 0) { [removeButton setEnabled:YES]; [copyButton setEnabled:YES]; } - [reloadButton setEnabled:YES]; [filterButton setEnabled:[fieldField isEnabled]]; tableRowsSelectable = YES; } diff --git a/Source/TableDocument.m b/Source/TableDocument.m index d35e4684..53d4474a 100644 --- a/Source/TableDocument.m +++ b/Source/TableDocument.m @@ -551,8 +551,8 @@ // Set table content details for restore if([spfSession objectForKey:@"contentSortCol"]) [tableContentInstance setSortColumnNameToRestore:[spfSession objectForKey:@"contentSortCol"] isAscending:[[spfSession objectForKey:@"contentSortCol"] boolValue]]; - if([spfSession objectForKey:@"contentLimitStartPosition"]) - [tableContentInstance setLimitStartToRestore:[[spfSession objectForKey:@"contentLimitStartPosition"] intValue]]; + if([spfSession objectForKey:@"contentPageNumber"]) + [tableContentInstance setPageToRestore:[[spfSession objectForKey:@"pageNumber"] intValue]]; if([spfSession objectForKey:@"contentViewport"]) [tableContentInstance setViewportToRestore:NSRectFromString([spfSession objectForKey:@"contentViewport"])]; if([spfSession objectForKey:@"contentFilter"]) @@ -2696,7 +2696,7 @@ [session setObject:[self connectionEncoding] forKey:@"connectionEncoding"]; [session setObject:[NSNumber numberWithBool:[tableContentInstance sortColumnIsAscending]] forKey:@"contentSortColIsAsc"]; - [session setObject:[NSNumber numberWithInt:[tableContentInstance limitStart]] forKey:@"contentLimitStartPosition"]; + [session setObject:[NSNumber numberWithInt:[tableContentInstance pageNumber]] forKey:@"contentPageNumber"]; [session setObject:NSStringFromRect([tableContentInstance viewport]) forKey:@"contentViewport"]; if([tableContentInstance filterSettings]) [session setObject:[tableContentInstance filterSettings] forKey:@"contentFilter"]; diff --git a/sequel-pro.xcodeproj/project.pbxproj b/sequel-pro.xcodeproj/project.pbxproj index 73980982..75b8063f 100644 --- a/sequel-pro.xcodeproj/project.pbxproj +++ b/sequel-pro.xcodeproj/project.pbxproj @@ -167,6 +167,10 @@ 58BC5E56103898140058C2E6 /* MCPStreamingResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 583B779710386B0200B21F7E /* MCPStreamingResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; 58BC5E571038983E0058C2E6 /* MCPResultPlus.h in Headers */ = {isa = PBXBuildFile; fileRef = 17B7B5D1101603B200F057DE /* MCPResultPlus.h */; settings = {ATTRIBUTES = (Public, ); }; }; 58C34F5310B86CAE00D37E14 /* NSNotificationAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 58C34F5210B86CAE00D37E14 /* NSNotificationAdditions.m */; }; + 58C3506510B9A56C00D37E14 /* button_left.png in Resources */ = {isa = PBXBuildFile; fileRef = 58C3506410B9A56C00D37E14 /* button_left.png */; }; + 58C3506710B9A57300D37E14 /* button_right.png in Resources */ = {isa = PBXBuildFile; fileRef = 58C3506610B9A57300D37E14 /* button_right.png */; }; + 58C3506B10B9AA8B00D37E14 /* button_pagination.png in Resources */ = {isa = PBXBuildFile; fileRef = 58C3506A10B9AA8B00D37E14 /* button_pagination.png */; }; + 58C3507510B9ADEA00D37E14 /* ContentPaginationView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 58C3507310B9ADEA00D37E14 /* ContentPaginationView.xib */; }; 58C56EF50F438E120035701E /* SPDataCellFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 58C56EF40F438E120035701E /* SPDataCellFormatter.m */; }; 58CB20ED0F79A75D005EA204 /* button_edit_mode_selected.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 58CB20EC0F79A75D005EA204 /* button_edit_mode_selected.tiff */; }; 58CDB3300FCE138D00F8ACA3 /* SPSSHTunnel.m in Sources */ = {isa = PBXBuildFile; fileRef = 58CDB32F0FCE138D00F8ACA3 /* SPSSHTunnel.m */; }; @@ -572,6 +576,10 @@ 589235311020C1230011DE00 /* SPHistoryController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPHistoryController.h; sourceTree = ""; }; 58C34F5110B86CAE00D37E14 /* NSNotificationAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSNotificationAdditions.h; sourceTree = ""; }; 58C34F5210B86CAE00D37E14 /* NSNotificationAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSNotificationAdditions.m; sourceTree = ""; }; + 58C3506410B9A56C00D37E14 /* button_left.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_left.png; sourceTree = ""; }; + 58C3506610B9A57300D37E14 /* button_right.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_right.png; sourceTree = ""; }; + 58C3506A10B9AA8B00D37E14 /* button_pagination.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_pagination.png; sourceTree = ""; }; + 58C3507410B9ADEA00D37E14 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/ContentPaginationView.xib; sourceTree = ""; }; 58C56EF30F438E120035701E /* SPDataCellFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPDataCellFormatter.h; sourceTree = ""; }; 58C56EF40F438E120035701E /* SPDataCellFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SPDataCellFormatter.m; sourceTree = ""; }; 58CB20EC0F79A75D005EA204 /* button_edit_mode_selected.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = button_edit_mode_selected.tiff; sourceTree = ""; }; @@ -1212,8 +1220,11 @@ B5A601960F74C1CE00EE5FBA /* button_refresh.tiff */, B5A601720F74930F00EE5FBA /* button_remove.tiff */, B5538AAB0FF251EE00219803 /* button_duplicate_icon.tif */, + 58C3506410B9A56C00D37E14 /* button_left.png */, + 58C3506A10B9AA8B00D37E14 /* button_pagination.png */, B5538AAC0FF251EE00219803 /* button_pane_hide_icon.tif */, B5538AAD0FF251EE00219803 /* button_pane_show_icon.tif */, + 58C3506610B9A57300D37E14 /* button_right.png */, 17E6418D0EF02036001BC333 /* clearconsole.tiff */, B577483A0F7A8B57003B34F9 /* database.png */, B5A601860F749C1600EE5FBA /* dimple.tiff */, @@ -1286,6 +1297,7 @@ 582A05A7108A5CCF0027D42B /* ProgressIndicatorLayer.xib */, 174CE11C10AB80B5008F892B /* DatabaseProcessList.xib */, 1792C13010AD752100ABE758 /* DatabaseServerVariables.xib */, + 58C3507310B9ADEA00D37E14 /* ContentPaginationView.xib */, ); path = Interfaces; sourceTree = ""; @@ -1710,6 +1722,10 @@ 17A66F6B10B1ED59004C9B12 /* old-appicon.icns in Resources */, 17CC97F710B4AC6C0034CD7A /* AboutPanel.xib in Resources */, 17CC993B10B4C9C80034CD7A /* License.rtf in Resources */, + 58C3506510B9A56C00D37E14 /* button_left.png in Resources */, + 58C3506710B9A57300D37E14 /* button_right.png in Resources */, + 58C3506B10B9AA8B00D37E14 /* button_pagination.png in Resources */, + 58C3507510B9ADEA00D37E14 /* ContentPaginationView.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2009,6 +2025,14 @@ path = ..; sourceTree = ""; }; + 58C3507310B9ADEA00D37E14 /* ContentPaginationView.xib */ = { + isa = PBXVariantGroup; + children = ( + 58C3507410B9ADEA00D37E14 /* English */, + ); + name = ContentPaginationView.xib; + sourceTree = ""; + }; B52460D90F8EF93B00171639 /* Console.xib */ = { isa = PBXVariantGroup; children = ( -- cgit v1.2.3