• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Fenster in Vollbild und/oder ohne Titelleiste

atl

Niederhelfenschwiler Beeriapfel
Registriert
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...
 

Daisy

Uelzener Rambour
Registriert
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

  • fullscreen.zip
    45,9 KB · Aufrufe: 121
  • Like
Reaktionen: Peter Maurer

atl

Niederhelfenschwiler Beeriapfel
Registriert
04.11.04
Beiträge
842
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.
Ja, so etwas (kompliziertes) hab ich mir schon gedacht. o_O
Anstatt alles hier zu Beschreiben habe ich dir einfach ein kleines Beispielprojekt angehängt. Wenn du Fragen dazu hast ...
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...
 

atl

Niederhelfenschwiler Beeriapfel
Registriert
04.11.04
Beiträge
842
Hallo.

Wenn du Fragen dazu hast ...
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...
 

Daisy

Uelzener Rambour
Registriert
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
 
  • Like
Reaktionen: atl

atl

Niederhelfenschwiler Beeriapfel
Registriert
04.11.04
Beiträge
842
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:
Super... funktioniert bestens! :) Das ist exakt genau das, was ich haben wollte. Vielen Dank! :-D
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 ...
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...
 

Daisy

Uelzener Rambour
Registriert
14.01.06
Beiträge
366
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...

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.
 

mac_in_tosh

Idared
Registriert
19.05.07
Beiträge
28
Ist es auch möglich, die Menubar oben auszublenden?
 
Zuletzt bearbeitet: