• 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

NSImage und ICNS-Dateien

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Hi,

vorab, ich habe null Ahnung von Obj-C, C und Cocoa. Steinigt mich als nicht, wenn die Antwort auf der Hand liegt.

Womit muss ich folgendes erweitern, dass es das 16x16-Icon aus der ICNS-Datei nimmt, statt dem 256x256-Icon?

Code:
statusImage = [[NSImage alloc] initWithContentsOfFile:[bundle pathForResource:@"colorpicker" ofType:@"icns"]];

Es geht, darum das kleine Icon oben in die Menüleiste zu integrieren.
 

LittlePixel

Strauwalds neue Goldparmäne
Registriert
09.07.08
Beiträge
641
Hallo,

NSImage *blubb = [NSImage imageNamed:mad:"IconName"];

NSArray *blubbRep = [blubb representations];

for(NSImageRep *imageRep in blubbRep) {

NSLog(@"%@", imageRep);

}

Dazu sollte man aber in die Dou sehen, um NSImage zu verstehen ;)
Mit Size kannst Du dann der jeweiligen NSImageRep prüfen.

Des Weitere hast Du Dir ein Leak eingebaut.
Bitte Doku zu Memory Management lesen.


Viele Grüße
 

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Danke, ein dealloc war mit im Beispiel dabei. Kann ich da mit deiner Methode darauf verzichten? Aber was bewirkt so ein Leak? Das Bild wird in den Speicher geladen und wenn ich das Programm beende wird der Speicher nicht mehr freigegeben? Wäre ja krass, wenn OS X sowas zulassen würde.

Wie wähle ich jetzt das Bild mit Size:{16,16} aus? Die Doku ist für einen Unwissenden nutzlos, da es keine Beispiele gibt und Grundlangen findet man auch nicht. Wenn ich nach Arrays suche, find ich alles möglich, nur keine Erklärung wie man sie nutzt.

Ich brauche ein NSImage, was ich auf NSStatusBar anwenden kann.

Ansonsten mach ich einfach eine separate Bild-Datei. Ich dachte nur, da es eh schon im Icon ist, könnte man auch direkt zugreifen.

Wie gesagt, ich habe Null Ahnung, ich bastle mir nur was anhand von Beispielcode, den ich im Netz finde, zusammen. Viel mehr möchte ich mich auch nicht damit beschäftigen. Das ganze Geklammere und das ständige Kompilieren zum testen geht mir ziemlich auf den Keks.

Weißt du eigentlich wie man unter Snow Leopard nun mehrsprachige Anwendungen in eine andere Sprache startet? Unter Leopard konnte man ja im Info-Fenster vom Finder die Sprachen ausschalten. Muss man jetzt immer in’s Bundle rein? Bietet Xcode vielleicht eine versteckte Funktion für sowas? Die Doku ist da auch wiedermal nicht aussagekräftig.

Sorry für den negativen Ton, aber irgendwie nervt mich gerade alles was mit Apple und Programmierung zu tun hat. AppleScript ist auch so eine seltsame Sprache wo ebenfalls die Doku ein Witz ist.
 

LittlePixel

Strauwalds neue Goldparmäne
Registriert
09.07.08
Beiträge
641
Einige Fragen sind zu elementar.
Leider können diese nur durch Eingeninitiative beantwortet werden.
Mir ist bewusst, dass mit Aufwand verbunden ist. Hier wird Dir das aber niemand umfangreich beantworten können.

Eine mögliche Umsetzung für Dein Problem:

NSImage *blubb = [NSImage imageNamed:mad:"IconNameInMyBundle"];
NSArray *blubbReps = [blubb representations];
NSImage *blubbNew = nil;

for(NSImageRep *imageRep in blubbReps) {

if(imageRep.size.width == 16) {

blubbNew = [[[NSImage alloc] init] autorelease];
[blubbNew addRepresentation:imageRep];

}

}

NSLog(@"%@", blubbNew);
(frei runter geschrieben)

AppleScript ist auch so eine seltsame Sprache wo ebenfalls die Doku ein Witz ist.
Generell finde ich die Doku sehr gut. Ebenfalls die Beispiele.

Ich meine das nicht böse, aber die Doku empfindest Du deshalb als schlecht, da Du mit ihr noch nicht vertraut bist und Dich somit nicht zurecht findest.

Du kannst mich auch mal anchatten. Auch wegen dem Testen noch, da ich Dich leider nie erreicht habe ;)

Viele Grüße
 

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Ja ich weiß, dass das alles so schnell nicht geht. Eigentlich sollte ich mich gar nicht damit beschäftigen, aber irgendwie hat mich das jetzt gepackt. ;)

Danke für das Beispiel, das hilft schon mal weiter. Die Schreibweise bla.blah.bubb ist mir bislang nicht untergekommen, ich dachte je mehr [ ], desto besser ;)

Meinst du die Doku zu Objective C? Meist sind da keine Beispiel, z. B. zu NSStatusBar. Für einen erfahrenen Programmierer ist sie sicher ganz gut zu nutzen, scheint ja wirklich alles dokumentiert zu sein. Bei AppleScript fehlt mir z. B. einfach mal eine Liste aller Befehle.

Werde den Chat morgen bzw. heute mal anlassen.
 

MacApple

Schöner von Bath
Registriert
05.01.04
Beiträge
3.652
Weißt du eigentlich wie man unter Snow Leopard nun mehrsprachige Anwendungen in eine andere Sprache startet? Unter Leopard konnte man ja im Info-Fenster vom Finder die Sprachen ausschalten. Muss man jetzt immer in’s Bundle rein?
Erste Möglichkeit wäre, in den Systemeinstellungen vor dem Starten des Programms die gewünschte Sprache nach oben zu ziehen.

Bietet Xcode vielleicht eine versteckte Funktion für sowas?
Wähle in Deinem Projekt das „Executable“ aus und drücke „Apfel-i“. In dem Info-Fenster im Tab „Arguments“ gibst Du folgendes als Argument ein:
Code:
-AppleLanguages ("gewünschte Sprache")
Wenn Du nun das Programm über Xcode startest, startet es in der „gewünschten Sprache“.
Alternativ kannst Du auch das Programm über das Terminal starten. Folgendes startet zum Beispiel TextEdit auf Französisch:
Code:
open /Applications/TextEdit.app --args -AppleLanguages \("fr"\)
MacApple
 

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Danke, das mit den Arguments geht leider nicht, da steht irgendwas, dass exec das nicht mag. Über’s Terminal und die Systemeinstellung geht’s aber.
 

LittlePixel

Strauwalds neue Goldparmäne
Registriert
09.07.08
Beiträge
641
Bei AppleScript fehlt mir z. B. einfach mal eine Liste aller Befehle.
Im SkiptEditor einfach Apfel + Shift + L drücken.
Dann den gewünschten Befehlssatz öffnen. Ist doch alles da ;)


Meinst du die Doku zu Objective C? Meist sind da keine Beispiel, z. B. zu NSStatusBar

Meist ist zu allem ein Beispiel hinterlegt.
Für Dein Vorhaben ebenfalls:

http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/StatusBar/StatusBar.pdf

Viele Grüße
 

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Im SkiptEditor einfach Apfel + Shift + L drücken.
Dann den gewünschten Befehlssatz öffnen. Ist doch alles da ;)
Ich meine die Sprache an sich, nicht die Objekte der verschiedenen Programme. Den Wortschatz der Grundsprache, so wie "tell", "does", "on", "first", "last" etc. Das ist alles irgendwie zerstreut. Aber ich weiß, ja dass meine Herangehensweise nicht optimal ist. Ich schau mir halte fertige Dinge an und will dann nachschlagen, was die Wörter so alles bedeuten. Unter Windows gibt’s die Skriptsprache AutoHotkey, da gibt’s eine große Liste mit dem Wortschatz, wo zu allem auch ein Beispiel vorhanden ist.


Ah, danke. Jetzt habe ich gerafft, dass sowas unter Companion guide zu finden ist.

Kann man den Sourcecode eigentlich irgendwie auf Memory Leaks oder sonstige problematische Herangehensweisen untersuchen lassen, so dass z. B. auf ein fehlendes dealloc hingewiesen wird?
 

LittlePixel

Strauwalds neue Goldparmäne
Registriert
09.07.08
Beiträge
641
Den Wortschatz der Grundsprache, so wie "tell", "does", "on", "first", "last" etc. Das ist alles irgendwie zerstreut.
StandardAdditions usw. ?

auf ein fehlendes dealloc hingewiesen wird?
Warum? Es ist nicht immer erforderlich.
Du verwechselst es auch gerade mit release.

Ich würde Dir das Buch von Herrn Amin Negm-Awad anraten.

Viele Grüße
 

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
In den StandardAdditions stehen auch nur die Objekte drin. Suche mal nach timeout. Aber egal, man muss ja damit zurechtkommen, was man hat.

Danke noch mal für die Tipps. Das Ergebnis ist brauchbar und schon mal besser als die AppleScript-Lösungen: http://www.apfeltalk.de/forum/endlich-system-farbw-t253713.html
 
Zuletzt bearbeitet:

LittlePixel

Strauwalds neue Goldparmäne
Registriert
09.07.08
Beiträge
641
Wenn ich auf den Link klicke, dann bekomme ich leider nur eine leere Seite.

Viele Grüße
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
Weißt du eigentlich wie man unter Snow Leopard nun mehrsprachige Anwendungen in eine andere Sprache startet?

Ich war zwar nicht gemeint :p ...
Aber wen es interessiert:
Es gibt da ein kleines Programm Language Switcher . Nachträglich noch mit einem kleinen Shortcut für den Menüpunkt "Programme öffnen" ausgestattet, ist es auch vollständig und schnell über die Tastatur zu bedienen. Nebenbei zeigt es auch an, ob die gewünschte Sprache überhaupt vorhanden ist. Nett.
 

Tekl

Fairs Vortrefflicher
Registriert
01.06.05
Beiträge
4.630
Cool, danke für den Tipp.