D言語からObjective-CとCocoaAPIを使いたい
NSTableView 関連API を分けてみました。
サンプルコード
Powered by Prism
cocoa/tables.d
/**
* cocoa.tables.d version 0.0.3
*/
module cocoa.tables;
import core.attribute : optional, selector;
import cocoa.window;
import cocoa.control;
extern (Objective-C)
extern class NSTableView : NSControl {
override static NSTableView alloc() @selector("alloc");
override NSTableView init() @selector("init");
override NSTableView init(NSRect) @selector("initWithFrame:");
NSTableViewDataSource dataSource() @selector("dataSource");
void delegate_(NSTableViewDelegate) @selector("setDelegate:");
void dataSource(NSTableViewDataSource) @selector("setDataSource:"); //
void dataSource(NSArray) @selector("setDataSource:"); //
bool staticContents() @selector("usesStaticContents");
void staticContents(bool) @selector("setUsesStaticContents:");
NSView viewId(NSUserInterfaceItemIdentifier, NSObject)
@selector("makeViewWithIdentifier:owner:");
NSTextField makeViewWithIdTf(NSUserInterfaceItemIdentifier, NSObject)
@selector("makeViewWithIdentifier:owner:");
NSTableCellView viewIdTcv(NSUserInterfaceItemIdentifier, NSObject)
@selector("makeViewWithIdentifier:owner:");
void addTableColumn(NSTableColumn) @selector("addTableColumn:");
void addColumn(NSTableColumn) @selector("addTableColumn:");
void removeTableColumn(NSTableColumn) @selector("removeTableColumn:");
void moveColumn(NSInteger, NSInteger) @selector("moveColumn:toColumn:");
NSInteger numOfColumns() @selector("numberOfColumns");
NSInteger numOfRows() @selector("numberOfRows");
// NSInteger numOfRows(NSTableView) @selector("numberOfRowsInTableView:");
// // NSTableView tableView(NSTableView, NSTableColumn, NSInteger)
// // @selector("tableView:objectValueForTableColumn:row:");
void reloadData() @selector("reloadData");
NSTableHeaderView headerView() @selector("headerView");
void headerView(NSTableHeaderView) @selector("setHeaderView:");
void beginUpdates() @selector("beginUpdates");
void rowBgColors(bool) @selector("setUsesAlternatingRowBackgroundColors:");
}
alias NSUserInterfaceItemIdentifier = NSString;
extern (Objective-C)
interface NSTableViewDataSource {
// Getting Values
NSInteger numOfRows(NSTableView) @selector("numberOfRowsInTableView:");
// NSObject tableViewO(NSTableView, NSTableColumn, NSInteger)
// @selector("tableView:objectValueForTableColumn:row:");
NSString tableViewS(NSTableView, NSTableColumn, NSInteger)
@selector("tableView:objectValueForTableColumn:row:");
// Setting Values
@optional void tableView(NSTableView, NSObject, NSTableColumn, NSInteger)
@selector("tableView:setObjectValue:forTableColumn:raw:");
}
extern (Objective-C)
interface NSTableViewDelegate {
NSView tableView(NSTableView, NSTableColumn, NSInteger)
@selector("tableView:viewForTableColumn:row:");
@optional NSTableRowView tableView(NSTableView, NSInteger)
@selector("tableView:rowViewForRow:");
}
enum NSTableViewStyle : NSInteger {
Automatic,
FullWidth,
Inset,
SourceList,
Plain
}
extern (Objective-C)
extern class NSTableColumn : NSObject {
override static NSTableColumn alloc() @selector("alloc");
override NSTableColumn init() @selector("init");
NSTableColumn init(NSString) @selector("initWithIdentifier:");
NSTableView tableView() @selector("tableView");
void tableView(NSTableView) @selector("setTableView:");
NSString title() @selector("title");
void title(NSString) @selector("setTitle:");
NSUserInterfaceItemIdentifier identifier() @selector("identifier");
CGFloat width() @selector("width");
void width(CGFloat) @selector("setWidth:"); // default 100.0
CGFloat miniWidth() @selector("miniWidth");
void miniWidth(CGFloat) @selector("setMiniWidth:"); // default 10.0
CGFloat maxWidth() @selector("maxWidth");
void maxWidth(CGFloat) @selector("setMaxWidth:"); // default MAXFLOAT
NSTableColumnResizingOptions resizingMask() @selector("resizingMask");
void resizingMask(ColumnResize) @selector("setResizingMask:");
void resizeMask(ColumnResize) @selector("setResizingMask:");
void sizeToFit() @selector("sizeToFit");
}
alias ColumnResize = NSTableColumnResizingOptions;
enum NSTableColumnResizingOptions : NSUInteger {
No = 0,
Auto = 1 << 0,
User = 1 << 1
}
extern (Objective-C)
extern class NSTableHeaderView : NSView {
override static NSTableHeaderView alloc() @selector("alloc");
override NSTableHeaderView init() @selector("init");
NSTableView tableView() @selector("tableView");
NSInteger draggedColumn() @selector("draggedColumn");
CGFloat draggedDistance() @selector("draggedDistance");
NSInteger resizedColumn() @selector("resizedColumn");
NSInteger columnAtPoint(NSPoint) @selector("columnAtPoint:");
NSRect headerRect(NSInteger) @selector("headerRectOfColumn:");
}
extern (Objective-C)
extern class NSObjectController : NSController {
override static NSObjectController alloc() @selector("alloc");
override NSObjectController init() @selector("init");
}
extern (Objective-C)
extern class NSController : NSObject {
override static NSObjectController alloc() @selector("alloc");
override NSObjectController init() @selector("init");
}
extern (Objective-C)
interface NSControlTextEditingDelegate {
NSView tableView(NSTableView, NSTableColumn, NSInteger)
@selector("tableView:viewForTableColumn:row:");
// NSTableRowView tableView(NSTableView, NSInteger)
// @selector("tableView:rowViewForRow:");
}
extern (Objective-C)
extern class NSCoder : NSObject {}
extern (Objective-C)
extern class NSTableCellView : NSView {
override static NSTableCellView alloc() @selector("alloc");
override NSTableCellView init() @selector("init");
NSObject objectValue() @selector("objectValue");
NSString strValue() @selector("objectValue");
NSString str() @selector("objectValue");
void strValue(NSString) @selector("setObjectValue:"); // auto binding
NSTextField textField() @selector("textField");
NSImageView imageView() @selector("imageView");
// NSNumber objectValue() @selector("objectValue");
// NSImage objectValue() @selector("objectValue");
}
/*
extern (Objective-C)
extern class NSTableRowView : NSView {
}
extern (Objective-C)
extern class NSTableHeaderCell : NSTextFieldCell {
void drawSort(NSRect, NSView, bool, NSInteger)
@selector("drawSortIndicatorWithFrame:inView:ascending:priority:");
NSRect sort(NSRect) @selector("sortIndicatorRectForBounds:");
}
*/
extern (Objective-C)
extern class NSTableRowView : NSView {
bool emphasized() @selector("emphasized");
}
NSArray toArrayJson(string path) {
NSData jStrData = NSData.data(path.toNs);
NSArray jArray = NSJSONSerialization.toJsArray(
jStrData, NSJSONReading.MutableContainers, null);
return jArray;
}
NSDictionary toDicJson(string path) {
NSData jStrData = NSData.data(path.toNs);
NSDictionary jDic = NSJSONSerialization.toJsDic(
jStrData, NSJSONReading.MutableContainers, null);
return jDic;
}
extern (Objective-C)
extern class NSJSONSerialization : NSObject {
// Creating JSON Object from JSON data
static NSObject toJsObj(NSData, NSJSONReading, NSError)
@selector("JSONObjectWithData:options:error:");
static NSDictionary toJsDic(NSData, NSJSONReading, NSError)
@selector("JSONObjectWithData:options:error:");
static NSArray toJsArray(NSData, NSJSONReading, NSError)
@selector("JSONObjectWithData:options:error:");
static NSObject toJsObj(NSInputStream, NSJSONReading, NSError)
@selector("JSONObjectWithStream:options:error:");
// Creating JSON data from JSON Object
static NSData toJsData(NSObject, NSJSONWriting, NSError)
@selector("dataWithJSONObject:options:error:");
static NSInteger writeJsObj(NSObject, NSOutputStream, NSJSONWriting, NSError)
@selector("writeJSONObject:toStream:options:error:");
}
enum NSJSONReading : NSUInteger { // NSJSONReadingOptions
MutableContainers = 1UL << 0, // 返された配列・辞書が変更可能
MutableLeaves = 1UL << 1, // グラフ内のリーフ文字列が変更可能
FragmentsAllowed = 1UL << 2, // オブジェクトの許可
JSON5Allowed = 1UL << 3, // JSON5構文をサポート
TopLevelDictionaryAssumed = 1UL << 4 // 辞書の想定を指定
}
enum NSJSONWriting : NSUInteger { // NSJSONWritingOptions
PrettyPrinted = 1UL << 0, // 空白・インデントを使用
SortedKeys = 1UL << 1, // キーを辞書順に並べ替え
FragmentsAllowed = 1UL << 2, // 配列・辞書でないオブジェクトを許可
WithoutEscapingSlashes = 1UL << 3 // スラッシュ文字の前にエスケープ文字を付けない
}
extern (Objective-C)
extern class NSData : NSObject {
// Creating Data
static NSData data() @selector("data");
static NSData bytes(void*, NSUInteger) @selector("dataWithBytes:length:");
static NSData noCopy(void*, NSUInteger) @selector("dataWithBytesNoCopy:length:");
static NSData noCopy(void*, NSUInteger, bool)
@selector("dataWithBytesNoCopy:length:freeWhenDone:");
static NSData data(NSData) @selector("dataWithData:");
NSData init(void*, NSUInteger) @selector("initWithBytes:length:");
NSData initNoCopy(void*, NSUInteger) @selector("initWithBytesNoCopy:length:");
// NSData initNoCopy(void*, NSUInteger, void*)
// @selector("initWithBytesNoCopy:length:deallocator:");
NSData init(NSData) @selector("initWithData:");
// Reading Data from a File
static NSData data(NSString path) @selector("dataWithContentsOfFile:");
static NSData data(NSString, NSDataReading, NSError)
@selector("dataWithContentsOfFile:options:NSError:");
static NSData data(NSURL url) @selector("dataWithContentsOfURL:");
// Writing Data to File
NSData writeFile(NSString path, bool) @selector("writeToFiel:atomically:");
NSData writeFile(NSString, NSDataWriting, NSError)
@selector("writeToFile:options:error:");
}
enum NSDataReading : NSUInteger { // NSDataReadingOptions
MappedIfSafe = 1UL << 0, // ファイルを仮想メモリにマップ
Uncached = 1UL << 1, // キャッシュに保存すべきでない
MappedAlways = 1UL << 3 // ファイルをマップする
}
enum NSDataWriting : NSUInteger {
Atomic = 1UL << 0, // 補助ファイル使用
WithoutOverwriting = 1UL << 1, // ファイルが存在する時はエラー
FileProtectionNone = 0x10000000,
ProtectNone = 0x10000000, // 暗号化しない
FileProtectionComplete = 0x20000000,
ProtectComplete = 0x20000000, // ロックが解除されている間のみ
FileProtectionCompleteUnlessOpen = 0x30000000,
ProtectUnlessOpen = 0x30000000, // ロック解除または開いているとき
FileProtectionCompleteUntilFirstUserAuthentication = 0x40000000,
ProtectFirstUse = 0x40000000, // 最初に解除したとき
FileProtectionMask = 0xf0000000 // システムが使用
}
extern (Objective-C)
extern class NSInputStream : NSStream {}
extern (Objective-C)
extern class NSOutputStream : NSStream {}
extern (Objective-C)
extern class NSStream : NSObject {}
cocoa/control.d
cocoa/window.d
- Log
- 2024-06-05
- 2023-0 upload