123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- #if defined(Hiro_Widget)
- namespace hiro {
- auto pWidget::construct() -> void {
- @autoreleasepool {
- if(!cocoaView) {
- abstract = true;
- cocoaView = [[NSView alloc] initWithFrame:NSMakeRect(0, 0, 0, 0)];
- [cocoaView setHidden:true];
- }
- if(auto window = self().parentWindow(true)) {
- if(auto p = window->self()) p->_append(self());
- setDroppable(self().droppable());
- setEnabled(self().enabled(true));
- setFocusable(self().focusable());
- setFont(self().font(true));
- setMouseCursor(self().mouseCursor());
- setToolTip(self().toolTip());
- setVisible(self().visible(true));
- }
- }
- }
- auto pWidget::destruct() -> void {
- @autoreleasepool {
- [cocoaView removeFromSuperview];
- [cocoaView release];
- }
- }
- auto pWidget::focused() const -> bool {
- @autoreleasepool {
- return cocoaView == [[cocoaView window] firstResponder];
- }
- }
- auto pWidget::setDroppable(bool droppable) -> void {
- //virtual
- }
- auto pWidget::setEnabled(bool enabled) -> void {
- if(abstract) enabled = false;
- @autoreleasepool {
- if([cocoaView respondsToSelector:@selector(setEnabled:)]) {
- [cocoaView setEnabled:enabled];
- }
- }
- }
- auto pWidget::setFocusable(bool focusable) -> void {
- //virtual
- }
- auto pWidget::setFocused() -> void {
- @autoreleasepool {
- [[cocoaView window] makeFirstResponder:cocoaView];
- }
- }
- auto pWidget::setFont(const Font& font) -> void {
- @autoreleasepool {
- if([cocoaView respondsToSelector:@selector(setFont:)]) {
- [cocoaView setFont:pFont::create(font)];
- }
- }
- }
- auto pWidget::setGeometry(Geometry geometry) -> void {
- @autoreleasepool {
- CGFloat windowHeight = [[cocoaView superview] frame].size.height;
- //round coordinates
- uint x = geometry.x();
- uint y = windowHeight - geometry.y() - geometry.height();
- uint width = geometry.width();
- uint height = geometry.height();
- [cocoaView setFrame:NSMakeRect(x, y, width, height)];
- [[cocoaView superview] setNeedsDisplay:YES];
- }
- pSizable::setGeometry(geometry);
- }
- auto pWidget::setMouseCursor(const MouseCursor& mouseCursor) -> void {
- //TODO
- }
- auto pWidget::setToolTip(const string& toolTip) -> void {
- //TODO
- }
- auto pWidget::setVisible(bool visible) -> void {
- if(abstract) visible = false;
- @autoreleasepool {
- [cocoaView setHidden:!visible];
- }
- }
- }
- #endif
|