Ejecutar action en diferentes nibs

9 views
Skip to first unread message

Jair Gaxiola

unread,
Sep 20, 2011, 11:51:27 PM9/20/11
to cocoah...@googlegroups.com
Hola,

Espero darme a explicar con la siguiente duda.

En un correo anterior preguntaba como crear un sheet y lo realice
creando un ejemplo muy sencillo para entender su logica. Ahora tengo
un detalle quiero crear diferentes sheets en un proyecto más grande
que contiene vista anidadas hay una vista que tiene 2 botones que
deben abrir los sheets. La cuestion es que para poder crear un sheet
deben ser parte de una clase NSWindow y en mi caso los botones que los
crean (aca tengo loa actions) los tengo en un NSView, lo tengo de esa
manera ya que tengo separado el proyecto en varios archivos
(NSViewController o NSView) y solo tengo un NSWindow como base
conforme se usan se van cargando.

Lo siguiente nose si es posible, pero lo que quiero es poder ejecutar
las actions creadas en el NSView desde el NSWindow o si alguien sabe
otra propuesta. Si no escribe tan clara mi duda puedo detallar más.


En pocas palabras, lo que quiero es abrir sheets desde 2 botones que
estan en una vista y que el panel se muestre como modal en la parte
central de la ventana principal.

Saludos

--
SIN ETIQUETAS.[ PUNTO ]
http://flavors.me/jyr
http://pythoncocoa.com
http://opentumblr.com

Jair Gaxiola

unread,
Sep 21, 2011, 1:00:38 AM9/21/11
to cocoah...@googlegroups.com
2011/9/20 Jair Gaxiola <jyr.g...@gmail.com>:

Estoy intentando con:

from Foundation import *
from AppKit import *

import objc

class ToolbarController (NSViewController):
newApp = objc.IBOutlet()
newInstance = objc.IBOutlet()
appSheet = objc.IBOutlet()

@objc.IBAction
def newApp_(self, sender):
NSApp.beginSheet_modalForWindow_modalDelegate_didEndSelector_contextInfo_( \
self.appSheet, NSApp().mainWindow(), self, None, None)

@objc.IBAction
def newInstance_(self, sender):
pass

Pero me regresa el error:

NSInternalInconsistencyException - Modal session requires modal window

Al parecer es por heredar de NSViewController

Gabriel Ayuso

unread,
Sep 21, 2011, 11:14:15 AM9/21/11
to CocoaHeadsGDL
Hice algo similar en un proyecto en el cual estoy trabajando pero
estoy ejecutando NSApp::beginSheet... desde un NSWindowController y el
sheet vive en su propio NSWindowController

Ejemplo:

[NSApp beginSheet:self.settingsSheetController.window
modalForWindow:self.window
modalDelegate:self

didEndSelector:@selector(settingsSheetDidEnd:returnCode:contextInfo:)
contextInfo:nil];

Gabriel Ayuso

On Sep 21, 7:00 am, Jair Gaxiola <jyr.gaxi...@gmail.com> wrote:
> 2011/9/20 Jair Gaxiola <jyr.gaxi...@gmail.com>:

Jair Gaxiola

unread,
Sep 21, 2011, 11:20:26 AM9/21/11
to cocoah...@googlegroups.com
2011/9/21 Gabriel Ayuso <gra...@gmail.com>:

> Hice algo similar en un proyecto en el cual estoy trabajando pero
> estoy ejecutando NSApp::beginSheet... desde un NSWindowController y el
> sheet vive en su propio NSWindowController
>
> Ejemplo:
>
> [NSApp beginSheet:self.settingsSheetController.window
>   modalForWindow:self.window
>      modalDelegate:self
>
> didEndSelector:@selector(settingsSheetDidEnd:returnCode:contextInfo:)
>            contextInfo:nil];
>

Claro he visto varios ejemplos como el que pusiste, solo que los
botones los tengo en una vista que se encuentra sobre otras vistas
entonces al heredar de NSView es imposible generar el sheet, puedo
hacer lo que comentas de poner el sheet en su propio
NSWindowController pero no puedo convertir el NSView en un NSWindow
controller ya que necesito la vista para agregarla en otra. Tengo que
pensar en otra manera de ejecutar el sheet o generar el modal sin
beginSheet.


--
SIN ETIQUETAS.[ PUNTO ]

Reply all
Reply to author
Forward
0 new messages