Nicht-modaler Filebrowser

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Nicht-modaler Filebrowser

    Ich sitze hier gerade an einer Bastelei, in der ich ganz gerne per Browser oder OutlineView das Filesystem anzeigen möchte - in etwa in der Ansicht, die es im Finder oder in Open- oder Save-Panels gibt. Die Funktionalität ist ja offensichtlich da, wenn es sie in den Panels gibt, aber eben nur in modalen Open- oder Save-Sessions. Weiß jemand von Euch, ob ich diese Funktionalität einfach für nicht-modale Interaktion übernehmen kann oder muss ich man das saudämlich nachbauen, in etwa so wie in Apples "SimpleBrowser"? Ein Browser oder Outline-View ist ja kein Problem, aber es ist schon eine Menge Bastelei, bis das angezeigte Filesystem so aussieht wie Apple es in den Panels macht. Das kann doch nicht sein - also: Wo endet der Schlauch, auf dem ich gerade stehe?
    Multigrad - 360°-Produktfotografie für den Mac
  • RE: Nicht-modaler Filebrowser

    Das Cachen und ggf. ein zweiter Task tut mir gar nicht so weh, aber es ist eine Menge Bastelei, bis das Ergebnis in etwa so aussieht wie das, was Apple den Benutzern vorsetzt. Versteckte Dateien ausschließen (da gibt's drei Mechanismen, die alle einzeln beachtet werden müssen), Packages nicht als Verzeichnisse darstellen, Umstellen und Lokalisierung der Verzeichnisstruktur, Icons holen usw. Ist sicherlich alles machbar, aber ich finde es einfach schade, dass die Funktionalität offensichtlich da ist und man nicht nutzen kann. Und dann stellt Apple in der nächsten OS-Version das Erscheinungsbild um und man darf wieder ran - ziemlicher Mist...
    Multigrad - 360°-Produktfotografie für den Mac
  • zermelo, gritsch: Ihr habt natürlich Recht, damit geht's nicht-modal. Kommt dem, was ich ursprünglich wollte, auch schon näher, aber leider nicht ganz. Ich hab's etwas dumm formuliert, mein Fehler. Ich brauche hätte gerne den Browser alleine, ohne die Knöpfe und das Panel drumherum - als View, um ihn in ein Fenster neben anderen Sachen zu packen. AccessoryView geht dafür leider auch nicht.
    Multigrad - 360°-Produktfotografie für den Mac
  • Hehe, genau das hatte ich beim letzten Post auch schon hingeschrieben, habe es aber zwei Sekunden vor "Antwort erstellen" aufgrund akuter und krampfhafter Bauchschmerzen wieder weggenommen... Ich bin mir sicher, dass der Begriff "ugly hack" genau für diese Situation erfunden wurde ;) Aber egal, ich probier's mal spaßeshalber - im Testen bin ich relativ schmerzfrei.
    Multigrad - 360°-Produktfotografie für den Mac
  • Original von zermelo
    Die schönsten "Features" in Cocoa Programmen beruhen doch (leider) auf "Ugly Hacks", weil Apple irgendwie teilweise eine seltsame Politik fährt...

    Findest Du? Och, nööö, ich kann nicht klagen - bei Cocoa brauche ich komischerweise wesentlich weniger böse Tricks als in vielen anderen Umgebungen. Vieles finde ich sehr sauber und lecker. Nur an einigen Stellen liegt Dreck herum, aber andererseits können ja gerade wir als Programmierer nicht erwarten, dass alles schon fertig und poliert ist - und gerade diese Baustellen sind doch die eigentlichen Herausforderungen :)
    Multigrad - 360°-Produktfotografie für den Mac
  • Original von mattik
    Findest Du? Och, nööö, ich kann nicht klagen - bei Cocoa brauche ich komischerweise wesentlich weniger böse Tricks als in vielen anderen Umgebungen. Vieles finde ich sehr sauber und lecker. Nur an einigen Stellen liegt Dreck herum, aber andererseits können ja gerade wir als Programmierer nicht erwarten, dass alles schon fertig und poliert ist - und gerade diese Baustellen sind doch die eigentlichen Herausforderungen :)

    Prinzipiell ja schon, was ich aber meine sind Dinge wie die Gradients á la Spotlight oder Mail.app. Oder die Fast-User-Switching Effekte (Keynote hat die auch, oder?), die eigentlich jeder benutzen kann (können sollte), aber irgendwie nicht "darf" (siehe osnews.com/story.php?news_id=10366)
    C++
  • Naja, private Methoden finde ich nicht unnormal - und in dem Artikel steht ja auch schon ein guter Grund, warum die Methoden nicht öffentlich sind: Offensichtlich kann sich die API noch ändern. Wenn Apple alles sofort öffentlich zugänglich machen würde, würden sie sich doch jeden Spielraum verbauen. Die Unterscheidung zwischen öffentlicher API und privaten Funktionen ist doch gerade der Gag strukturierter Programmierung, oder? Wer sowas benutzt, soll sich nicht wundern, wenn es mit der nächsten OSX-Version nicht mehr funktioniert. Klar wär's toll, das alles schlüsselfertig zu bekommen, aber gerade im Bereich GUI-Effekte kann man doch nicht meckern, oder?
    Multigrad - 360°-Produktfotografie für den Mac
  • Und wieder gebe ich dir prinzipiell recht.
    Aber Du musst mir doch zustimmen, dass es eher ausschaut wie:
    A: "Boah, ham wir hier ein super tolles Feature eingebaut, richtig klasse. Dokumentier das mal und räum mal die API auf!"
    B: "Och nöö--- das dauert so ewiiig und is langweilig. dann schaffen wir das release datum nich...."
    A: "Nagut, irgendwann machst dus aber, ja?"
    B: "Versprochen!"
    C++
  • Ein grund, warum sie's ncht öffentlich machen ist denke ich die mangelnde Verwendbarkeit in den meisten Apps. Keiner braucht nen gradient oder sonen file selector. Drum behalten sie's für sich, mit der option es zu ändern.

    Z.B. gibt es auch keine öffentliche Methode, um herauszubekommen ob ein Dictionary mutable ist oder nicht. NSMutableDictionary und NSDictionary liefern exakt die selbe subklassen-instanz der beiden zurück (CFDictionary glaub ich). Und diese meldet sich erst bei nem fehler. Aber mal ehrlich: wie viele von euch haben das bisher gebraucht??? ;)
  • Original von M.A.X
    Z.B. gibt es auch keine öffentliche Methode, um herauszubekommen ob ein Dictionary mutable ist oder nicht. NSMutableDictionary und NSDictionary liefern exakt die selbe subklassen-instanz der beiden zurück (CFDictionary glaub ich). Und diese meldet sich erst bei nem fehler. Aber mal ehrlich: wie viele von euch haben das bisher gebraucht??? ;)

    Nicht ausprobiert, aber... nicht mal "respondsToSelector:" geht mit dem Namen einer Methode, die nur die mutable-Variante unterstützt?
    if (!exit(-1)) fprintf(stderr, "exit call failed. Program will continue\n");