Mercurial > projects > dstep
view dstep/appkit/NSBrowser.d @ 16:19885b43130e
Huge update, the bridge actually works now
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Sun, 03 Jan 2010 22:06:11 +0100 |
parents | |
children | b9de51448c6b |
line wrap: on
line source
/** * Copyright: Copyright (c) 2009 Jacob Carlborg. * Authors: Jacob Carlborg * Version: Initial created: Sep 24, 2009 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0) */ module dstep.appkit.NSBrowser; import dstep.appkit.NSCell; import dstep.appkit.NSColor; import dstep.appkit.NSControl; import dstep.appkit.NSDragging; import dstep.appkit.NSEvent; import dstep.appkit.NSImage; import dstep.appkit.NSMatrix; import dstep.appkit.NSScroller; import dstep.applicationservices.coregraphics.CGBase; import dstep.foundation.NSArray; import dstep.foundation.NSGeometry; import dstep.foundation.NSIndexSet; import dstep.foundation.NSObjCRuntime; import dstep.foundation.NSString; import dstep.objc.bridge.Bridge; import dstep.objc.objc; import bindings = dstep.appkit.NSBrowser_bindings; alias NSUInteger NSBrowserColumnResizingType; alias NSUInteger NSBrowserDropOperation; private { NSString NSBrowserColumnConfigurationDidChangeNotification_; } NSString NSBrowserColumnConfigurationDidChangeNotification () { if (NSBrowserColumnConfigurationDidChangeNotification_) return NSBrowserColumnConfigurationDidChangeNotification_; return NSBrowserColumnConfigurationDidChangeNotification_ = new NSString(bindings.NSBrowserColumnConfigurationDidChangeNotification); } enum { NSBrowserNoColumnResizing = 0, NSBrowserAutoColumnResizing = 1, NSBrowserUserColumnResizing = 2 } enum { NSBrowserDropOn, NSBrowserDropAbove } struct _Brflags { uint firstVisibleCalculationDisabled; uint prefersAllColumnUserResizing; uint usesSmallScrollers; uint usesSmallSizeTitleFont; uint actionNeedsToBeSent; uint acceptsFirstMouse; uint refusesFirstResponder; uint disableCompositing; uint delegateSelectsCellsByRow; uint allowsIncrementalSearching; uint time; uint hasHorizontalScroller; uint prohibitEmptySel; uint sendActionOnArrowKeys; uint dontDrawTitles; uint acceptArrowKeys; uint delegateValidatesColumns; uint delegateDoesNotCreateRowsInMatrix; uint delegateSelectsCellsByString; uint delegateSetsTitles; uint delegateImplementsWillDisplayCell; uint separateColumns; uint titleFromPrevious; uint isTitled; uint reuseColumns; uint allowsBranchSelection; uint allowsMultipleSelection; } class NSBrowser : NSControl { mixin (ObjcWrap); static Class cellClass () { return invokeObjcSelfClass!(Class, "cellClass"); } void loadColumnZero () { return invokeObjcSelf!(void, "loadColumnZero"); } bool isLoaded () { return invokeObjcSelf!(bool, "isLoaded"); } void setDoubleAction (SEL aSelector) { return invokeObjcSelf!(void, "setDoubleAction:", SEL)(aSelector); } SEL doubleAction () { return invokeObjcSelf!(SEL, "doubleAction"); } void setMatrixClass (Class factoryId) { return invokeObjcSelf!(void, "setMatrixClass:", Class)(factoryId); } Class matrixClass () { return invokeObjcSelf!(Class, "matrixClass"); } void setCellClass (Class factoryId) { return invokeObjcSelf!(void, "setCellClass:", Class)(factoryId); } void setCellPrototype (NSCell aCell) { return invokeObjcSelf!(void, "setCellPrototype:", NSCell)(aCell); } Object cellPrototype () { return invokeObjcSelf!(Object, "cellPrototype"); } void setDelegate (Object anObject) { return invokeObjcSelf!(void, "setDelegate:", Object)(anObject); } Object delegate_ () { return invokeObjcSelf!(Object, "delegate"); } void setReusesColumns (bool flag) { return invokeObjcSelf!(void, "setReusesColumns:", bool)(flag); } bool reusesColumns () { return invokeObjcSelf!(bool, "reusesColumns"); } void setHasHorizontalScroller (bool flag) { return invokeObjcSelf!(void, "setHasHorizontalScroller:", bool)(flag); } bool hasHorizontalScroller () { return invokeObjcSelf!(bool, "hasHorizontalScroller"); } void setSeparatesColumns (bool flag) { return invokeObjcSelf!(void, "setSeparatesColumns:", bool)(flag); } bool separatesColumns () { return invokeObjcSelf!(bool, "separatesColumns"); } void setTitled (bool flag) { return invokeObjcSelf!(void, "setTitled:", bool)(flag); } bool isTitled () { return invokeObjcSelf!(bool, "isTitled"); } void setMinColumnWidth (CGFloat columnWidth) { return invokeObjcSelf!(void, "setMinColumnWidth:", CGFloat)(columnWidth); } CGFloat minColumnWidth () { return invokeObjcSelf!(CGFloat, "minColumnWidth"); } void setMaxVisibleColumns (NSInteger columnCount) { return invokeObjcSelf!(void, "setMaxVisibleColumns:", NSInteger)(columnCount); } NSInteger maxVisibleColumns () { return invokeObjcSelf!(NSInteger, "maxVisibleColumns"); } void setAllowsMultipleSelection (bool flag) { return invokeObjcSelf!(void, "setAllowsMultipleSelection:", bool)(flag); } bool allowsMultipleSelection () { return invokeObjcSelf!(bool, "allowsMultipleSelection"); } void setAllowsBranchSelection (bool flag) { return invokeObjcSelf!(void, "setAllowsBranchSelection:", bool)(flag); } bool allowsBranchSelection () { return invokeObjcSelf!(bool, "allowsBranchSelection"); } void setAllowsEmptySelection (bool flag) { return invokeObjcSelf!(void, "setAllowsEmptySelection:", bool)(flag); } bool allowsEmptySelection () { return invokeObjcSelf!(bool, "allowsEmptySelection"); } void setTakesTitleFromPreviousColumn (bool flag) { return invokeObjcSelf!(void, "setTakesTitleFromPreviousColumn:", bool)(flag); } bool takesTitleFromPreviousColumn () { return invokeObjcSelf!(bool, "takesTitleFromPreviousColumn"); } void setAcceptsArrowKeys (bool flag) { return invokeObjcSelf!(void, "setAcceptsArrowKeys:", bool)(flag); } bool acceptsArrowKeys () { return invokeObjcSelf!(bool, "acceptsArrowKeys"); } void setSendsActionOnArrowKeys (bool flag) { return invokeObjcSelf!(void, "setSendsActionOnArrowKeys:", bool)(flag); } bool sendsActionOnArrowKeys () { return invokeObjcSelf!(bool, "sendsActionOnArrowKeys"); } void setTitle (NSString aString, NSInteger column) { return invokeObjcSelf!(void, "setTitle:ofColumn:", NSString, NSInteger)(aString, column); } NSString titleOfColumn (NSInteger column) { return invokeObjcSelf!(NSString, "titleOfColumn:", NSInteger)(column); } void setPathSeparator (NSString newString) { return invokeObjcSelf!(void, "setPathSeparator:", NSString)(newString); } NSString pathSeparator () { return invokeObjcSelf!(NSString, "pathSeparator"); } bool setPath (NSString path) { return invokeObjcSelf!(bool, "setPath:", NSString)(path); } NSString path () { return invokeObjcSelf!(NSString, "path"); } NSString pathToColumn (NSInteger column) { return invokeObjcSelf!(NSString, "pathToColumn:", NSInteger)(column); } NSInteger selectedColumn () { return invokeObjcSelf!(NSInteger, "selectedColumn"); } Object selectedCell () { return invokeObjcSelf!(Object, "selectedCell"); } Object selectedCellInColumn (NSInteger column) { return invokeObjcSelf!(Object, "selectedCellInColumn:", NSInteger)(column); } NSArray selectedCells () { return invokeObjcSelf!(NSArray, "selectedCells"); } void selectRow (NSInteger row, NSInteger column) { return invokeObjcSelf!(void, "selectRow:inColumn:", NSInteger, NSInteger)(row, column); } NSInteger selectedRowInColumn (NSInteger column) { return invokeObjcSelf!(NSInteger, "selectedRowInColumn:", NSInteger)(column); } void selectRowIndexes (NSIndexSet indexes, NSInteger column) { return invokeObjcSelf!(void, "selectRowIndexes:inColumn:", NSIndexSet, NSInteger)(indexes, column); } NSIndexSet selectedRowIndexesInColumn (NSInteger column) { return invokeObjcSelf!(NSIndexSet, "selectedRowIndexesInColumn:", NSInteger)(column); } void reloadColumn (NSInteger column) { return invokeObjcSelf!(void, "reloadColumn:", NSInteger)(column); } void validateVisibleColumns () { return invokeObjcSelf!(void, "validateVisibleColumns"); } void scrollColumnsRightBy (NSInteger shiftAmount) { return invokeObjcSelf!(void, "scrollColumnsRightBy:", NSInteger)(shiftAmount); } void scrollColumnsLeftBy (NSInteger shiftAmount) { return invokeObjcSelf!(void, "scrollColumnsLeftBy:", NSInteger)(shiftAmount); } void scrollColumnToVisible (NSInteger column) { return invokeObjcSelf!(void, "scrollColumnToVisible:", NSInteger)(column); } void setLastColumn (NSInteger column) { return invokeObjcSelf!(void, "setLastColumn:", NSInteger)(column); } NSInteger lastColumn () { return invokeObjcSelf!(NSInteger, "lastColumn"); } void addColumn () { return invokeObjcSelf!(void, "addColumn"); } NSInteger numberOfVisibleColumns () { return invokeObjcSelf!(NSInteger, "numberOfVisibleColumns"); } NSInteger firstVisibleColumn () { return invokeObjcSelf!(NSInteger, "firstVisibleColumn"); } NSInteger lastVisibleColumn () { return invokeObjcSelf!(NSInteger, "lastVisibleColumn"); } NSInteger columnOfMatrix (NSMatrix matrix) { return invokeObjcSelf!(NSInteger, "columnOfMatrix:", NSMatrix)(matrix); } NSMatrix matrixInColumn (NSInteger column) { return invokeObjcSelf!(NSMatrix, "matrixInColumn:", NSInteger)(column); } Object loadedCellAtRow (NSInteger row, NSInteger col) { return invokeObjcSelf!(Object, "loadedCellAtRow:column:", NSInteger, NSInteger)(row, col); } void selectAll (Object sender) { return invokeObjcSelf!(void, "selectAll:", Object)(sender); } void tile () { return invokeObjcSelf!(void, "tile"); } void doClick (Object sender) { return invokeObjcSelf!(void, "doClick:", Object)(sender); } void doDoubleClick (Object sender) { return invokeObjcSelf!(void, "doDoubleClick:", Object)(sender); } bool sendAction () { return invokeObjcSelf!(bool, "sendAction"); } NSRect titleFrameOfColumn (NSInteger column) { return invokeObjcSelf!(NSRect, "titleFrameOfColumn:", NSInteger)(column); } void drawTitleOfColumn (NSInteger column, NSRect aRect) { return invokeObjcSelf!(void, "drawTitleOfColumn:inRect:", NSInteger, NSRect)(column, aRect); } CGFloat titleHeight () { return invokeObjcSelf!(CGFloat, "titleHeight"); } NSRect frameOfColumn (NSInteger column) { return invokeObjcSelf!(NSRect, "frameOfColumn:", NSInteger)(column); } NSRect frameOfInsideOfColumn (NSInteger column) { return invokeObjcSelf!(NSRect, "frameOfInsideOfColumn:", NSInteger)(column); } CGFloat columnWidthForColumnContentWidth (CGFloat columnContentWidth) { return invokeObjcSelf!(CGFloat, "columnWidthForColumnContentWidth:", CGFloat)(columnContentWidth); } CGFloat columnContentWidthForColumnWidth (CGFloat columnWidth) { return invokeObjcSelf!(CGFloat, "columnContentWidthForColumnWidth:", CGFloat)(columnWidth); } void setColumnResizingType (uint columnResizingType) { return invokeObjcSelf!(void, "setColumnResizingType:", uint)(columnResizingType); } uint columnResizingType () { return invokeObjcSelf!(uint, "columnResizingType"); } void setPrefersAllColumnUserResizing (bool prefersAllColumnResizing) { return invokeObjcSelf!(void, "setPrefersAllColumnUserResizing:", bool)(prefersAllColumnResizing); } bool prefersAllColumnUserResizing () { return invokeObjcSelf!(bool, "prefersAllColumnUserResizing"); } void setWidth (CGFloat columnWidth, NSInteger columnIndex) { return invokeObjcSelf!(void, "setWidth:ofColumn:", CGFloat, NSInteger)(columnWidth, columnIndex); } CGFloat widthOfColumn (NSInteger column) { return invokeObjcSelf!(CGFloat, "widthOfColumn:", NSInteger)(column); } void setColumnsAutosaveName (NSString name) { return invokeObjcSelf!(void, "setColumnsAutosaveName:", NSString)(name); } NSString columnsAutosaveName () { return invokeObjcSelf!(NSString, "columnsAutosaveName"); } static void removeSavedColumnsWithAutosaveName (NSString name) { return invokeObjcSelfClass!(void, "removeSavedColumnsWithAutosaveName:", NSString)(name); } bool canDragRowsWithIndexes (NSIndexSet rowIndexes, NSInteger column, NSEvent event) { return invokeObjcSelf!(bool, "canDragRowsWithIndexes:inColumn:withEvent:", NSIndexSet, NSInteger, NSEvent)(rowIndexes, column, event); } NSImage draggingImageForRowsWithIndexes (NSIndexSet rowIndexes, NSInteger column, NSEvent event, NSPointPointer dragImageOffset) { return invokeObjcSelf!(NSImage, "draggingImageForRowsWithIndexes:inColumn:withEvent:offset:", NSIndexSet, NSInteger, NSEvent, NSPointPointer)(rowIndexes, column, event, dragImageOffset); } void setDraggingSourceOperationMask (uint mask, bool isLocal) { return invokeObjcSelf!(void, "setDraggingSourceOperationMask:forLocal:", uint, bool)(mask, isLocal); } bool allowsTypeSelect () { return invokeObjcSelf!(bool, "allowsTypeSelect"); } void setAllowsTypeSelect (bool value) { return invokeObjcSelf!(void, "setAllowsTypeSelect:", bool)(value); } void setBackgroundColor (NSColor color) { return invokeObjcSelf!(void, "setBackgroundColor:", NSColor)(color); } NSColor backgroundColor () { return invokeObjcSelf!(NSColor, "backgroundColor"); } void displayColumn (NSInteger column) { return invokeObjcSelf!(void, "displayColumn:", NSInteger)(column); } void displayAllColumns () { return invokeObjcSelf!(void, "displayAllColumns"); } void scrollViaScroller (NSScroller sender) { return invokeObjcSelf!(void, "scrollViaScroller:", NSScroller)(sender); } void updateScroller () { return invokeObjcSelf!(void, "updateScroller"); } } const TNSBrowserDelegate = ` NSInteger browser (NSBrowser sender, NSInteger column) { return invokeObjcSelf!(NSInteger, "browser:numberOfRowsInColumn:", NSBrowser, NSInteger)(sender, column); } void browser (NSBrowser sender, NSInteger column, NSMatrix matrix) { return invokeObjcSelf!(void, "browser:createRowsForColumn:inMatrix:", NSBrowser, NSInteger, NSMatrix)(sender, column, matrix); } void browser (NSBrowser sender, Object cell, NSInteger row, NSInteger column) { return invokeObjcSelf!(void, "browser:willDisplayCell:atRow:column:", NSBrowser, Object, NSInteger, NSInteger)(sender, cell, row, column); } NSString browser (NSBrowser sender, NSInteger column) { return invokeObjcSelf!(NSString, "browser:titleOfColumn:", NSBrowser, NSInteger)(sender, column); } bool browser (NSBrowser sender, NSString title, NSInteger column) { return invokeObjcSelf!(bool, "browser:selectCellWithString:inColumn:", NSBrowser, NSString, NSInteger)(sender, title, column); } bool browser (NSBrowser sender, NSInteger row, NSInteger column) { return invokeObjcSelf!(bool, "browser:selectRow:inColumn:", NSBrowser, NSInteger, NSInteger)(sender, row, column); } bool browser (NSBrowser sender, NSInteger column) { return invokeObjcSelf!(bool, "browser:isColumnValid:", NSBrowser, NSInteger)(sender, column); } void browserWillScroll (NSBrowser sender) { return invokeObjcSelf!(void, "browserWillScroll:", NSBrowser)(sender); } void browserDidScroll (NSBrowser sender) { return invokeObjcSelf!(void, "browserDidScroll:", NSBrowser)(sender); } CGFloat browser (NSBrowser browser, NSInteger columnIndex, bool forUserResize, CGFloat suggestedWidth) { return invokeObjcSelf!(CGFloat, "browser:shouldSizeColumn:forUserResize:toWidth:", NSBrowser, NSInteger, bool, CGFloat)(browser, columnIndex, forUserResize, suggestedWidth); } CGFloat browser (NSBrowser browser, NSInteger columnIndex) { return invokeObjcSelf!(CGFloat, "browser:sizeToFitWidthOfColumn:", NSBrowser, NSInteger)(browser, columnIndex); } void browserColumnConfigurationDidChange (NSNotification notification) { return invokeObjcSelf!(void, "browserColumnConfigurationDidChange:", NSNotification)(notification); } bool browser (NSBrowser browser, NSInteger row, NSInteger column) { return invokeObjcSelf!(bool, "browser:shouldShowCellExpansionForRow:column:", NSBrowser, NSInteger, NSInteger)(browser, row, column); } bool browser (NSBrowser browser, NSIndexSet rowIndexes, NSInteger column, NSPasteboard pasteboard) { return invokeObjcSelf!(bool, "browser:writeRowsWithIndexes:inColumn:toPasteboard:", NSBrowser, NSIndexSet, NSInteger, NSPasteboard)(browser, rowIndexes, column, pasteboard); } NSArray browser (NSBrowser browser, NSURL dropDestination, NSIndexSet rowIndexes, NSInteger column) { return invokeObjcSelf!(NSArray, "browser:namesOfPromisedFilesDroppedAtDestination:forDraggedRowsWithIndexes:inColumn:", NSBrowser, NSURL, NSIndexSet, NSInteger)(browser, dropDestination, rowIndexes, column); } bool browser (NSBrowser browser, NSIndexSet rowIndexes, NSInteger column, NSEvent event) { return invokeObjcSelf!(bool, "browser:canDragRowsWithIndexes:inColumn:withEvent:", NSBrowser, NSIndexSet, NSInteger, NSEvent)(browser, rowIndexes, column, event); } NSImage browser (NSBrowser browser, NSIndexSet rowIndexes, NSInteger column, NSEvent event, NSPointPointer dragImageOffset) { return invokeObjcSelf!(NSImage, "browser:draggingImageForRowsWithIndexes:inColumn:withEvent:offset:", NSBrowser, NSIndexSet, NSInteger, NSEvent, NSPointPointer)(browser, rowIndexes, column, event, dragImageOffset); } uint browser (NSBrowser browser, INSDraggingInfo info, NSInteger* row, NSInteger* column, NSBrowserDropOperation* dropOperation) { return invokeObjcSelf!(uint, "browser:validateDrop:proposedRow:column:dropOperation:", NSBrowser, INSDraggingInfo, NSInteger*, NSInteger*, NSBrowserDropOperation*)(browser, info, row, column, dropOperation); } bool browser (NSBrowser browser, INSDraggingInfo info, NSInteger row, NSInteger column, uint dropOperation) { return invokeObjcSelf!(bool, "browser:acceptDrop:atRow:column:dropOperation:", NSBrowser, INSDraggingInfo, NSInteger, NSInteger, uint)(browser, info, row, column, dropOperation); } NSString browser (NSBrowser browser, NSInteger row, NSInteger column) { return invokeObjcSelf!(NSString, "browser:typeSelectStringForRow:inColumn:", NSBrowser, NSInteger, NSInteger)(browser, row, column); } bool browser (NSBrowser browser, NSEvent event, NSString searchString) { return invokeObjcSelf!(bool, "browser:shouldTypeSelectForEvent:withCurrentSearchString:", NSBrowser, NSEvent, NSString)(browser, event, searchString); } NSInteger browser (NSBrowser browser, NSInteger startRow, NSInteger endRow, NSInteger column, NSString searchString) { return invokeObjcSelf!(NSInteger, "browser:nextTypeSelectMatchFromRow:toRow:inColumn:forString:", NSBrowser, NSInteger, NSInteger, NSInteger, NSString)(browser, startRow, endRow, column, searchString); } //mixin ObjcBindMethod!(browser, "browser:numberOfRowsInColumn:"); //mixin ObjcBindMethod!(browser, "browser:createRowsForColumn:inMatrix:"); //mixin ObjcBindMethod!(browser, "browser:willDisplayCell:atRow:column:"); //mixin ObjcBindMethod!(browser, "browser:titleOfColumn:"); //mixin ObjcBindMethod!(browser, "browser:selectCellWithString:inColumn:"); //mixin ObjcBindMethod!(browser, "browser:selectRow:inColumn:"); //mixin ObjcBindMethod!(browser, "browser:isColumnValid:"); //mixin ObjcBindMethod!(browserWillScroll, "browserWillScroll:"); //mixin ObjcBindMethod!(browserDidScroll, "browserDidScroll:"); //mixin ObjcBindMethod!(browser, "browser:shouldSizeColumn:forUserResize:toWidth:"); //mixin ObjcBindMethod!(browser, "browser:sizeToFitWidthOfColumn:"); //mixin ObjcBindMethod!(browserColumnConfigurationDidChange, "browserColumnConfigurationDidChange:"); //mixin ObjcBindMethod!(browser, "browser:shouldShowCellExpansionForRow:column:"); //mixin ObjcBindMethod!(browser, "browser:writeRowsWithIndexes:inColumn:toPasteboard:"); //mixin ObjcBindMethod!(browser, "browser:namesOfPromisedFilesDroppedAtDestination:forDraggedRowsWithIndexes:inColumn:"); //mixin ObjcBindMethod!(browser, "browser:canDragRowsWithIndexes:inColumn:withEvent:"); //mixin ObjcBindMethod!(browser, "browser:draggingImageForRowsWithIndexes:inColumn:withEvent:offset:"); //mixin ObjcBindMethod!(browser, "browser:validateDrop:proposedRow:column:dropOperation:"); //mixin ObjcBindMethod!(browser, "browser:acceptDrop:atRow:column:dropOperation:"); //mixin ObjcBindMethod!(browser, "browser:typeSelectStringForRow:inColumn:"); //mixin ObjcBindMethod!(browser, "browser:shouldTypeSelectForEvent:withCurrentSearchString:"); //mixin ObjcBindMethod!(browser, "browser:nextTypeSelectMatchFromRow:toRow:inColumn:forString:"); `;