ASS: Drawer Inhalt tauschen

Dieses Thema im Forum "Scripting und Automatisierung" wurde erstellt von little_pixel, 11.01.2007.

  1. little_pixel

    little_pixel Thread Starter MacUser Mitglied

    Beiträge:
    3.807
    Zustimmungen:
    940
    MacUser seit:
    06.06.2006
    Hallo,

    ich möchte gerne den Inhalt eines Drawers verändern.
    Mein Drawer zeigt auf ein View Element. Durch klicken eines Buttons, soll der Drawer auf eine anderes View Element zeigen.

    Hat jemand hierfür schon eine Lösung umgesetzt, oder kennt einen Link?

    Danke!

    Viele Grüße
     
  2. chebfarid

    chebfarid MacUser Mitglied

    Beiträge:
    894
    Zustimmungen:
    75
    MacUser seit:
    05.10.2005
    Hab ich leider nicht verstanden :rolleyes:
    Was heißt "Mein Drawer zeigt auf ein View Element ?"
    Oder willst Du per Script den Inhalt des View Objektes verändern (aber der Drawer bleibt immer der gleiche) ?

    Farid
     
  3. little_pixel

    little_pixel Thread Starter MacUser Mitglied

    Beiträge:
    3.807
    Zustimmungen:
    940
    MacUser seit:
    06.06.2006
    Hallo,

    entschuldige, leider habe ich mich schlecht ausgedrückt.
    Ich möchte genau das erreichen, wie in Deiner Frage geschrieben ist.
    Ein Drawer dessen Inhalt (View Element) über z.B. ein "on click" geändert werden soll.

    Danke!

    Viele Grüße
     
  4. chebfarid

    chebfarid MacUser Mitglied

    Beiträge:
    894
    Zustimmungen:
    75
    MacUser seit:
    05.10.2005
    Gesetzt den Fall, daß es sich bei dem View Objekt um ein Image View handelt und die nötigen Image Resources in Deinem Projekt angelegt worden sind, reicht im on clicked theObject Handler für Deinen Button eine Anweisung wie:
    PHP:
    set image of image view "NameImageView" of drawer "NameDrawer" of window "NameWindow" to load image "NameImageFile"
    Wahrscheinlich mußt Du in Deinem Code auch irgendwo abspeichern (z.B. mittels eines Zählers/Indexes) welches das aktuell präsentierte Bild ist, um dann per Knopfdruck das nächste zu laden.
    Siehe auch: http://developer.apple.com/document...nce/index.html#//apple_ref/doc/uid/TP30000892

    Frohes scripten
    Farid
     
  5. little_pixel

    little_pixel Thread Starter MacUser Mitglied

    Beiträge:
    3.807
    Zustimmungen:
    940
    MacUser seit:
    06.06.2006
    Hallo,

    nochmals vielen Dank für die Antwort.
    Also mit dem Drawer stelle ich mich sehr schwer an.

    Ich möchte gerne in Erfahrung bringen, welcher Drawer offen ist.
    Dann möchte ich den Namen herausfinden, und den aktuellen Drawer schließen.

    Code:
    		set zustandDrawerOffen to drawer opened
    		set nameDrawer to drawer name of zustandDrawerOffen
    
    		delay 3
    
    		if (zustandDrawerOffen is equal to drawer opened) then
    			tell drawer nameDrawer to close drawer
    		end if
    [CODE]
    
    Es ist mir leider nicht möglich :-(
    
    Viele Grüße
     
  6. little_pixel

    little_pixel Thread Starter MacUser Mitglied

    Beiträge:
    3.807
    Zustimmungen:
    940
    MacUser seit:
    06.06.2006
    Okay, ich habe in Erfahrung gebracht, dass der Name scheinbar nicht "auslesbar" sei.

    Vielleicht gibt es eine Anweisung, die sinngemäß lautet:

    Schließe den aktuell geöffneten Drawer.

    Viele Grüße
     
  7. chebfarid

    chebfarid MacUser Mitglied

    Beiträge:
    894
    Zustimmungen:
    75
    MacUser seit:
    05.10.2005
    Doch, doch, das ist er ;)
    Ganz primitives Beispiel: ein Fenster, zwei Drawer (links, rechts), drei Buttons (links, rechts, toggle).
    Der "Links" Button öffnet den linken Drawer sofern er vorher geschlossen war und umgekehrt, der "Rechts" Button das gleich in grün, der "Toggle" Button wechselt zwischen links-rechts aufundzu.
    Außerdem ein Textfeld "openDrawers", in das die Namen der aktuell offenen Drawer geschrieben werden:

    PHP:
    property openDrawers : {}

    on clicked theObject
        
    if name of theObject "leftButton" then
            
    if state of drawer "leftDrawer" of window "main" drawer closed then
                tell drawer 
    "leftDrawer" of window "main" to open drawer
            
    else
                
    tell drawer "leftDrawer" of window "main" to close drawer
            end 
    if
            
        else if 
    name of theObject "rightButton" then
            
    if state of drawer "rightDrawer" of window "main" drawer closed then
                tell drawer 
    "rightDrawer" of window "main" to open drawer
            
    else
                
    tell drawer "rightDrawer" of window "main" to close drawer
            end 
    if
            
        else if 
    name of theObject "toggleButton" then
            
    if state of drawer "leftDrawer" of window "main" drawer closed then
                tell drawer 
    "leftDrawer" of window "main" to open drawer
                tell drawer 
    "rightDrawer" of window "main" to close drawer
            
    else
                
    tell drawer "leftDrawer" of window "main" to close drawer
                tell drawer 
    "rightDrawer" of window "main" to open drawer
            end 
    if
        
    end if
        
    delay 1 -- komischerweise braucht AppleScript eine Sekunde Pausebevor es die offenen Drawer korrekt ermitteln kann
        my drawerInfo
    ()
    end clicked

    on drawerInfo
    ()
        
    set theDrawers to every drawer of window "main"
        
    repeat with aDrawer in theDrawers
            
    if state of aDrawer drawer opened then
                set end of openDrawers to 
    (name of aDrawer)
            
    end if
        
    end repeat
        set contents of text field 
    "openDrawers" of window "main" to (every item of openDrawers)
        
    set openDrawers to {}
    end drawerInfo
    Ich hoffe, das Beispiel hilft Dir ein wenig weiter, wenn Du willst, schicke ich Dir das xCode-Projekt zu.

    Frohes Scripten
    Farid
     
  8. little_pixel

    little_pixel Thread Starter MacUser Mitglied

    Beiträge:
    3.807
    Zustimmungen:
    940
    MacUser seit:
    06.06.2006
    Hallo,

    das ist genau das was ich gesucht habe. (Handler on drawerInfo())

    Viele Dank, echt super!
    Ich habe Heute drei Stunden damit verbracht eine Lösung zu finden.
    Jetzt ist alles gut :)

    Viele Grüße
     
Die Seite wird geladen...

Diese Seite empfehlen