Re: [racket-dev] Windowing API

2011-10-15 Thread Eric Dobson
Thanks that worked.

-Eric

On Oct 15, 2011, at 7:07 AM, Matthew Flatt wrote:

> I think you'll have to handle `on-size' at the `racket/gui' level:
> 
> (define panel
>   (new (class panel%
>  (define/override (on-size w h)
>(tellv web-view setFrame:
>   #:type _NSRect (make-NSRect (make-NSPoint 0 0) 
>   (make-NSSize w h
>  (super-new))
>[parent frame]))
> 
> ;; instead of `frame-view':
> (define panel-view (send panel get-client-handle)) 
> (tellv panel-view addSubview: web-view)
> 
> 
> At Fri, 14 Oct 2011 23:19:32 -0700, Eric Dobson wrote:
>> I am trying to implement a WebKit panel in Racket, and am running in to some 
>> trouble with the windowing API. I cannot get resizing to work. In OS X it 
>> looks like it is supposed to be enabled by default so I assume racket is 
>> changing it so that it can do its layout algorithm. The problem is that If I 
>> want to hook into this It looks like I need to get access to the platform 
>> specific racket windowing API. Currently I can get access to the Objective C 
>> layer, but not to the hidden racket layer. Maybe this is not the way I 
>> should 
>> approach this but I'm hoping someone can help.
>> 
>> 
>> 
>> #lang racket 
>> (require racket/gui/base ffi/unsafe/objc ffi/unsafe) 
>> (require mred/private/wx/cocoa/types 
>> (prefix-in c: mred/private/wx/cocoa/window)) 
>> (define webkit-lib (ffi-lib (format 
>> "/System/Library/Frameworks/WebKit.framework/WebKit"))) 
>> 
>> (import-class WebView) 
>> (import-class NSURLRequest) 
>> (import-class NSURL) 
>> (define web-view (tell (tell WebView alloc) initWithFrame: #:type _NSRect 
>> (make-NSRect (make-NSPoint 0 0) (make-NSSize 300 300)) frameName: #f 
>> groupName: #f)) 
>> (define frame (new frame% (label "test-frame") (width 300) (height 300))) 
>> ;(define racket-web-view (new c:window% (parent frame) (cocoa web-view) 
>> (no-show? #f))) 
>> ;This problem is here the parent argument needs to be the platform specific 
>> window and not the generic one
>> (define frame-view (send frame get-client-handle)) 
>> (tellv frame-view addSubview: web-view) 
>> 
>> (define request (tell NSURLRequest requestWithURL: (tell NSURL 
>> URLWithString: 
>> #:type _NSString "http://www.google.com";))) 
>> (tellv (tell web-view mainFrame) loadRequest: request) 
>> 
>> (send frame show #t) 
>> _
>>  For list-related administrative tasks:
>>  http://lists.racket-lang.org/listinfo/dev


_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


Re: [racket-dev] Windowing API

2011-10-15 Thread Matthew Flatt
I think you'll have to handle `on-size' at the `racket/gui' level:

 (define panel
   (new (class panel%
  (define/override (on-size w h)
(tellv web-view setFrame:
   #:type _NSRect (make-NSRect (make-NSPoint 0 0) 
   (make-NSSize w h
  (super-new))
[parent frame]))

 ;; instead of `frame-view':
 (define panel-view (send panel get-client-handle)) 
 (tellv panel-view addSubview: web-view)


At Fri, 14 Oct 2011 23:19:32 -0700, Eric Dobson wrote:
> I am trying to implement a WebKit panel in Racket, and am running in to some 
> trouble with the windowing API. I cannot get resizing to work. In OS X it 
> looks like it is supposed to be enabled by default so I assume racket is 
> changing it so that it can do its layout algorithm. The problem is that If I 
> want to hook into this It looks like I need to get access to the platform 
> specific racket windowing API. Currently I can get access to the Objective C 
> layer, but not to the hidden racket layer. Maybe this is not the way I should 
> approach this but I'm hoping someone can help.
> 
> 
> 
> #lang racket 
> (require racket/gui/base ffi/unsafe/objc ffi/unsafe) 
> (require mred/private/wx/cocoa/types 
>  (prefix-in c: mred/private/wx/cocoa/window)) 
> (define webkit-lib (ffi-lib (format 
> "/System/Library/Frameworks/WebKit.framework/WebKit"))) 
>  
> (import-class WebView) 
> (import-class NSURLRequest) 
> (import-class NSURL) 
> (define web-view (tell (tell WebView alloc) initWithFrame: #:type _NSRect 
> (make-NSRect (make-NSPoint 0 0) (make-NSSize 300 300)) frameName: #f 
> groupName: #f)) 
> (define frame (new frame% (label "test-frame") (width 300) (height 300))) 
> ;(define racket-web-view (new c:window% (parent frame) (cocoa web-view) 
> (no-show? #f))) 
> ;This problem is here the parent argument needs to be the platform specific 
> window and not the generic one
> (define frame-view (send frame get-client-handle)) 
> (tellv frame-view addSubview: web-view) 
>  
> (define request (tell NSURLRequest requestWithURL: (tell NSURL URLWithString: 
> #:type _NSString "http://www.google.com";))) 
> (tellv (tell web-view mainFrame) loadRequest: request) 
>  
> (send frame show #t) 
> _
>   For list-related administrative tasks:
>   http://lists.racket-lang.org/listinfo/dev
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


[racket-dev] Windowing API

2011-10-14 Thread Eric Dobson
I am trying to implement a WebKit panel in Racket, and am running in to some 
trouble with the windowing API. I cannot get resizing to work. In OS X it looks 
like it is supposed to be enabled by default so I assume racket is changing it 
so that it can do its layout algorithm. The problem is that If I want to hook 
into this It looks like I need to get access to the platform specific racket 
windowing API. Currently I can get access to the Objective C layer, but not to 
the hidden racket layer. Maybe this is not the way I should approach this but 
I'm hoping someone can help.



#lang racket 
(require racket/gui/base ffi/unsafe/objc ffi/unsafe) 
(require mred/private/wx/cocoa/types 
 (prefix-in c: mred/private/wx/cocoa/window)) 
(define webkit-lib (ffi-lib (format 
"/System/Library/Frameworks/WebKit.framework/WebKit"))) 
 
(import-class WebView) 
(import-class NSURLRequest) 
(import-class NSURL) 
(define web-view (tell (tell WebView alloc) initWithFrame: #:type _NSRect 
(make-NSRect (make-NSPoint 0 0) (make-NSSize 300 300)) frameName: #f groupName: 
#f)) 
(define frame (new frame% (label "test-frame") (width 300) (height 300))) 
;(define racket-web-view (new c:window% (parent frame) (cocoa web-view) 
(no-show? #f))) 
;This problem is here the parent argument needs to be the platform specific 
window and not the generic one
(define frame-view (send frame get-client-handle)) 
(tellv frame-view addSubview: web-view) 
 
(define request (tell NSURLRequest requestWithURL: (tell NSURL URLWithString: 
#:type _NSString "http://www.google.com";))) 
(tellv (tell web-view mainFrame) loadRequest: request) 
 
(send frame show #t) 
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev