D言語からObjective-CとCocoaAPIを使いたい
split View 関係 の API を分離してみました
サンプルコード
Powered by Prism
cocoa/split_views.d
/**
* cocoa.split_views.d version 0.0.1
*/
module cocoa.split_views;
import core.attribute : optional, selector;
import cocoa.window;
import cocoa.control;
extern (Objective-C)
extern class NSSplitView : NSView {
override static NSSplitView alloc() @selector("alloc");
override NSSplitView init() @selector("init");
/* Customizing the Split View Behavior */
NSSplitViewDelegate delegate_() @selector("delegate");
/* Arranging Subviews */
bool arrangesAllSubviews() @selector("arrangesAllSubviews");
NSArray arrangedSubviews() @selector("arrangedSubviews");
void addArrangedSubview(NSView) @selector("addArrangedSubview:");
void insertArrangedSubview(NSView, NSInteger)
@selector("insertArrangedSubview:atIndex:");
void removeArrangedSubview(NSView) @selector("removeArrangedSubview:");
/* Managing Subviews */
void adjustSubviews() @selector("adjustSubviews");
bool isSubviewCollapsed(NSView) @selector("isSubviewCollapsed:");
NSLayoutPriority holdingPriorityForSubviewAtIndex(NSInteger)
@selector("holdingPriorityForSubviewAtIndex:");
NSLayoutPriority holdPriority(NSInteger)
@selector("holdingPriorityForSubviewAtIndex:");
void holdingPriority(NSLayoutPriority, NSInteger)
@selector("setHoldingPriority:forSubviewAtIndex:");
void holdPriority(NSLayoutPriority, NSInteger)
@selector("setHoldingPriority:forSubviewAtIndex:");
/* Managing Divider Orientation */
bool vertical() @selector("isVertical"); // default = false
void vertical(bool) @selector("setVertical:");
/* Configuring and Drawing Dividers */
NSSplitViewDividerStyle dividerStyle() @selector("dividerStyle");
void dividerStyle(NSSplitViewDividerStyle) @selector("setDividerStyle:");
NSColor dividerColor() @selector("dividerColor");
void dividerColor(NSColor) @selector("setDividerColor:"); // subClass
CGFloat dividerThickness() @selector("dividerThickness");
//// void dividerThickness(CGFloat) @selector("setDividerThickness:"); // subClass
void drawDividerInRect(NSRect) @selector("drawDividerInRect:");
/* Saving Subview Positions */
NSSplitViewAutosaveName autosaveName() @selector("autosaveName"); // System uses
void autosaveName(NSSplitViewAutosaveName) @selector("setAutosaveName:");
/* Constraining Split Position */
CGFloat minPossiblePositionOfDividerAtIndex(NSInteger)
@selector("minPossiblePositionOfDividerAtIndex:");
CGFloat maxPossiblePositionOfDividerAtIndex(NSInteger)
@selector("maxPossiblePositionOfDividerAtIndex:");
void position(CGFloat, NSInteger) @selector("setPosition:ofDividerAtIndex:");
/* Managing Notifications */
NSNotificationName nsSplitViewWillResizeSubviewsNotification()
@selector("NSSplitViewWillResizeSubviewNotification");
NSNotificationName nsSplitViewDidResizeSubviewsNotification()
@selector("NSSplitViewDidResizeSubviewsNotification");
}
// alias NSLayoutPriority = float;
alias SplitStyle = NSSplitViewDividerStyle;
enum NSSplitViewDividerStyle : NSInteger {
Thick = 1,
Thin = 2,
PaneSplitter = 3
}
alias NSSplitViewAutosaveName = NSString;
alias NSNotificationName = NSString;
extern (Objective-C)
interface NSSplitViewDelegate {
/* Managing Subviews */
@optional void splitViewWillResizeSubviews(NSNotification)
@selector("splitViewWillResizeSubviews:");
@optional void splitViewDidResizeSubViews(NSNotification)
@selector("splitViewDidResizeSubviews:");
@optional bool splitView(NSSplitView, NSView)
@selector("splitView:canCollapseSubview:");
/* Configuring and Drawing View Dividers */
@optional NSRect splitView(NSSplitView, NSRect, NSRect, NSInteger)
@selector("splitView:effectiveRect:forDrawnRect:ofDividerAtIndex:");
@optional bool splitView(NSSplitView, NSInteger)
@selector("splitView:shouldHideDividerAtIndex:");
@optional NSRect splitView(NSSplitView, NSInteger)
@selector("splitView:additionalEffectiveRectOfDividerAtIndex:");
/* Constraining Split Position */
@optional CGFloat splitView(NSSplitView, CGFloat, NSInteger)
@selector("splitView:constrainSplitPosition:ofSubviewAt:");
/* Adjusting Subviews Manually */
@optional CGFloat splitViewMin(NSSplitView, CGFloat, NSInteger)
@selector("splitView:constrainMinCoordinate:ofSubviewAt:");
@optional CGFloat splitViewMax(NSSplitView, CGFloat, NSInteger)
@selector("splitView:constrainMaxCoordinate:ofSubviewAt:");
@optional void splitView(NSSplitView, NSSize)
@selector("splitView:resizeSubviewsWithOldSize:");
@optional bool splitView(NSSplitView, NSView)
@selector("splitView:shouldAdjustSizeOfSubview:");
}
extern (Objective-C)
extern class NSSplitViewController : NSViewController {
/* Configuring and Managing a Split View Controller */
NSSplitView splitView() @selector("splitView");
void splitView(NSSplitView) @selector("splitView:");
NSSplitViewItem splitViewItemForViewController(NSViewController)
@selector("splitViewItemForViewController:");
NSArray splitViewItems() @selector("splitViewItems");
/* Modifying a Split View Controller */
void addSplitViewItem(NSSplitViewItem) @selector("addSplitViewItem:");
void insertSplitViewItem(NSSplitViewItem, NSInteger)
@selector("insertSplitViewItem:atIndex:");
void removeSplitviewItem(NSSplitViewItem) @selector("removeSplitViewItem:");
/* Managing Sidebars */
CGFloat miniThicknessSidebars() @selector("minimumThicknessForInlineSidebars");
void miniThicknessSidebars(CGFloat) @selector("setMinimumThicknessForInlineSidebars:");
CGFloat nsSplitViewControllerAutomaticDimension()
@selector("NSSplitViewControllerAutomaticDimension");
void nsSplitViewControllerAutomaticDimension(CGFloat)
@selector("setNSSplitViewControllerAutomaticDimension:");
/* Managing Inspectors */
/* Responding to View Events */
override void viewDidLoad() @selector("viewDidLoad");
/* Supporting Protocol Requirements */
}
extern (Objective-C)
extern class NSSplitViewItem : NSObject {
/* Creating s Split View Item */
/+
static sidebarWithViewController(NSViewController)
@selector("sidebarWithViewController:");
static contentListWithViewController(NSViewController)
@selector("contentListWithViewController:");
static splitViewItemWithViewController(NSViewController)
@selector("splitViewItemWithViewController:");
static inspectorWithViewController(NSViewController)
@selector("inspectorWithViewController:");
+/
/* Managing the Item Thickness */
CGFloat automaticMaximumThickness() @selector("automaticMaximumThickness");
CGFloat perferredThicknessFraction() @selector("perferredThicknessFraction");
CGFloat minimumThickness() @selector("minimumThickness");
CGFloat nsSplitViewItemUnspecifiedDimension()
@selector("NSSplitViewItemUnspecifiedDimension");
/* Getting Auto LayoutBehaviors */
NSLayoutPriority holdingPriority() @selector("holdingPriority");
/* Getting the Item Behavior */
NSSplitViewItemBehavior behavior() @selector("behavior");
/* Collapsing and Expanding the Item */
bool collapsed() @selector("isCollapsed"); // "collapsed" ??
bool canCollapse() @selector("canCollapse");
NSSplitViewItemCollapseBehavior collapseBehavior() @selector("collapseBehavior");
bool sprintLoaded() @selector("isSpringLoaded"); // ??
bool canCollapseFromWindowResize() @selector("canCollapseFromWindowResize");
/* Customizing Appearance */
bool allowsFullHeightLayout() @selector("allowsFullHeightLayout");
NSTitlebarSeparatorStyle titlebarSeparatorStyle() @selector("titlebarSeparatorStyole");
/* Getting the View Controller */
NSViewController viewController() @selector("viewController");
}
enum NSLayoutPriority : float {
Required = 1000,
DefaultHigh = 750,
DragThatCanResizeWindow = 510,
WindowSizeStayPut = 500,
DragThatCannotResizeWindow = 490,
DefaultLow = 250,
FittingSizeCompression = 50,
}
enum NSSplitViewItemBehavior : NSInteger {
Default,
Sidebar,
contentList,
Inspector,
}
enum NSSplitViewItemCollapseBehavior : NSInteger {
Default,
PreferResizingSplitViewWithFixedSiblings,
ResizingSiblingsWithFixedSplitView,
UseConstraints,
}
enum NSTitlebarSeparatorStyle : NSInteger {
Automatic,
Line,
None,
Shadow,
}
- Log
- 2024-07-25 upload