1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

Fenster in Vollbild und/oder ohne Titelleiste

Dieses Thema im Forum "AppleScript" wurde erstellt von atl, 09.07.07.

  1. atl

    atl Niederhelfenschwiler Beeriapfel

    Dabei seit:
    04.11.04
    Beiträge:
    842
    Hallo,

    für ein kleines Projekt nutze ich AppleScript Studio, um eine Applikation zu schreiben. Gibt es in AppleScript (Studio) eine Möglichkeit, (Programm-)Fenster wie folgt darzustellen:
    1. im Vollbild
    2. rahmenlos, d.h. auch ohne Titelzeile, so daß es auch nicht vershcoben werden kann
    Leider haben sowohl die Suche im Forum & Internet als auch kleine Experimente nichts in der Hinsicht ergeben. :( Für Tips wäre ich deshlab echt dankbar. :)

    ByE...
     
  2. Daisy

    Daisy Uelzener Rambour

    Dabei seit:
    14.01.06
    Beiträge:
    366
    Hi atl,

    in beiden Fällen ist mit reinem AppleScript nix auszurichten. Das Vollformatfenster ist im Interface Builder standardmäßig nicht vorgesehen und man muss deshalb z.B. eine Subclass einsetzen, die man dann im Interface Builder als 'Custom Class' verwenden kann.

    Das Ausblenden der Menüleiste geht mit SetSystemUIMode (Carbon).

    Anstatt alles hier zu Beschreiben habe ich dir einfach ein kleines Beispielprojekt angehängt. Wenn du Fragen dazu hast ...

    Um alles in dein Projekt u übernehmen, machst du Folgendes:

    - ziehe die BDBlackFullscreenWindow- und NSApplicationAddition-Files aus meinem in dein Projekt (da springt dann ein Fenster auf - in dem wählst du die Option 'copy items into destination ...' und bestätigst mit 'OK')
    - ziehe das Carbon.framework aus meinem in dein Projekt (in Frameworks/Linked Frameworks), dieses mal aber ohne die 'Copy items ..'-Option (kannst das Framework natürlich auch mit anderen Methoden in dein Projekt bekommen ...)
    - dann öffnest du den Interface Builder und ziehst 'BDBlackFullscreenWindow.h' auf dein 'xyz.nib'-Fenster.
    - letzter Schritt: im Interface Builder - wähle das Fenster, das zum Fullscreen-Femster werden soll und weise ihm die Custom Class 'BDFullscreenWindow' zu (mit Apfel+5 im Inspektor)

    Wenn du das Fenster nicht schwarz haben willst, dann kommentiere einfach die Zeile 13 (... setBackgroundColor: ) in BDBlackFullscreenWindow.h mit '//' am Anfang aus.

    Wenn du noch Fragen hast ... ;)

    Grüße,

    Daisy
     

    Anhänge:

    Peter Maurer gefällt das.
  3. atl

    atl Niederhelfenschwiler Beeriapfel

    Dabei seit:
    04.11.04
    Beiträge:
    842
    Ja, so etwas (kompliziertes) hab ich mir schon gedacht. o_O
    Supi! :-D Ich werde das mal ausprobieren. Wenn's nicht klappt oder ich noch Fragen hab, dann weiß ich ja, wo ich mich melden kann... Danke. :)

    ByE...
     
  4. atl

    atl Niederhelfenschwiler Beeriapfel

    Dabei seit:
    04.11.04
    Beiträge:
    842
    Hallo.

    Ich hab mir das mal angesehen und bin erstaunt, wie (relativ) einfach das funktioniert - wenn man's weiß. ;) Und so gleich hat sich mir noch eine weitere Frage aufgeworfen:
    • Wie muss ich das Projekt anpassen, damit das Fenster in der normalen Größe (wie im InterfaceBuilder definiert, aber ohne Titelzeile) dargestellt wird und Klick auf eine Taste in den Vollbild "umschaltet"?
    Noch mal vielen Dank für die Hilfe! :-D

    ByE...
     
  5. Daisy

    Daisy Uelzener Rambour

    Dabei seit:
    14.01.06
    Beiträge:
    366
    Moin moin,

    das kann man jetzt (fast) ganz mit AppleScript erledigen - das sollte in etwa so aussehen - ich habe einen zweiten Button dafür auf das Fenster gesetzt, mit dem man hin und her schalten kann:

    Code:
    property menuBar : true
    property isFullscreen : true
    global fullscreenBounds
    property smallBounds : {100, 100, 900, 600}
    
    on clicked theObject
    	if (name of theObject is "hideMenubar") then
    		set menuBar to not menuBar
    		call method "setMenuBarVisible:" with parameter menuBar
    	else if (name of theObject is "resizeWindow") then
    		
    		tell window "main"
    			if isFullscreen is false then
    				set smallBounds to it's bounds
    				set bounds to fullscreenBounds
    				call method "setMovableByWindowBackground:" of it with parameter no
    			else
    				set fullscreenBounds to it's bounds
    				set bounds to smallBounds
    				call method "setMovableByWindowBackground:" of it with parameter yes
    			end if
    		end tell
    		set isFullscreen to not isFullscreen
    	end if
    end clicked
    
    und setze die Knöpfchen etwas nach unten, da sie sonst nicht mehr im sichtbaren Bereich des Fensters sind ;)

    der einzige Problemfall bei der vorliegenden Konstruktion wäre, wenn jemand bei laufendem Programm die Auflösung des Screens umschaltet, da müsste man dann hat bei jedem Umschalten die Größe ermitteln ...

    Grüße,

    Daisy
     
    atl gefällt das.
  6. atl

    atl Niederhelfenschwiler Beeriapfel

    Dabei seit:
    04.11.04
    Beiträge:
    842
    Super... funktioniert bestens! :) Das ist exakt genau das, was ich haben wollte. Vielen Dank! :-D
    Das ist kein Problem, weil die Applikation (vermutl.) nur auf einem Mac laufen wird, der bei mir im Auto eingebaut ist. Und da ändert sich die Bildschirmauflösung normalerweise nicht. ;)
    Code:
    tell window "main"
         call method "setMovableByWindowBackground:" of it with parameter no
    end tell
    Hier hab' ich noch mal 'ne allgemeine Frage. Wenn ich das richtig interpretiere, gibt mir die call method die Möglichkeit, Funktionen aufzurufen, die nicht in Applescript definiert/deklariert sind. Was sind das für Funktionen (Cocoa, Carbon) und wo sind sie dokumentiert? o_O

    ByE...
     
  7. Daisy

    Daisy Uelzener Rambour

    Dabei seit:
    14.01.06
    Beiträge:
    366
    Hi Atl,

    freut mich, dass es gepasst hat :) ... zu den call methods - damit lassen sich Cocoa-Methods aus Applescript einbinden. Eine Beschreibung findest du auf deiner Festplatte
    unter file:///Developer/ADC%20Reference%20Library/reference/Cocoa/index.html#//apple_ref/doc/uid/TP30001281-TP30000416
    (oder im Internet bei http://developer.apple.com/)


    Ein schneller Weg zur Beschreibung einer Klasse ist es, irgendwo im Script bzw. Code den Klassennamen auszuwählen und im Kontextmenü dazu den Menüpunkt "Find selected Text in Documentation" zu wählen - dann bekommst du eine Liste mit beschreibenden Dokumenten und Beispielen. Wenn du die Liste nach Relevanz sortiert hast, dann steht die ... Class Reference meist ganz oben ..

    Grüße,

    D.
     
  8. mac_in_tosh

    mac_in_tosh Idared

    Dabei seit:
    19.05.07
    Beiträge:
    28
    Ist es auch möglich, die Menubar oben auszublenden?
     
    #8 mac_in_tosh, 24.09.07
    Zuletzt bearbeitet: 29.09.07

Diese Seite empfehlen