6 berichten aan het bekijken - 1 tot 6 (van in totaal 6)
  • Q:
    Bijdrager
    Jakko Westerbeke

    Applescript Studio: items toevoegen aan outline-control?

    Hopelijk weet iemand de oplossing voor dit probleem, want ik kom er niet uit:(

    Ik ben een programma aan het schrijven in Applescript Studio, waarin ik een outline-control heb opgenomen. Ik heb er een datasource aan gekoppeld, en het voorbeeld gevolgd uit de AppleScript Studio Terminology Reference om items aan de outline toe te voegen als categorieën waar items “onder” moeten komen. Dit werkt zonder problemen. Daarna wil ik kind-items toevoegen aan de hoofditems. Ook dit gaat, maar alleen aan de laatste — ik kan geen manier vinden om onder een andere items toe te voegen.

    Wat ik gedaan heb is een array gemaakt met de categorieën, en via een Repeat statement de categorieën toegevoegd:
    [code:1:7e5405213b]property categorieen : {"A", "B", "C"}

    — wat meer code die niet van belang is (want ze werkt)

    repeat with c in categorieen
    set categorieItem to make new data item at end of data items of data source "dataBron"
    set contents of data cell "cel" of categorieItem to c
    end repeat[/code:1:7e5405213b]
    Hierdoor blijft natuurlijk categorieItem gedefiniëerd als het laatste toegevoegde item (in dit voorbeeld “C”), dus daar kan ik zonder problemen naar verwijzen om kind-items toe te voegen.

    Mijn probleem is dan dan ik er maar niet achter kom hoe ik naar andere items kan verwijzen.
    [code:1:7e5405213b]set categorieItem to "B"
    set kindItem to make new data item at end of data items of categorieItem[/code:1:7e5405213b]
    werkt bijvoorbeeld niet — dat zorgt voor een foutmelding Can’t get every «class datI» of “B”. (-1728). Probeer ik hem om te zetten naar een ander type, bijvoorbeeld door as reference achter de eerste regel te plakken, dan wordt de foutmelding Can’t make “B” into type reference. (-1700).

    Iemand enig idee wat ik verkeerd doe?:(

    Bijdrager
    Jakko Westerbeke

    Niemand?

    Goed, ondertussen heb ik een oplossing, die me in elk geval het resultaat geeft dat ik wilde, hoewel het niet zo netjes is als zou kunnen. Omdat anderen er misschien ook nog wat aan gaan hebben zal ik hem maar delen:)

    Binnen de repeat-loop die in het bovenstaande voorbeeld staat, heb ik nog een repeat-loop geplaatst. Deze doorloopt een tweede list (array), die als volgt opgebouwd is:
    [code:1:97aae72b88]{{itemnaam:"bla", categorie:"A"}, {itemnaam:"blabla", categorie:"A"}, {itemnaam:"blablabla", categorie:"B"} … }[/code:1:97aae72b88]
    Door nu dus deze lijst helemaal te doorlopen, voegt hij alleen de onderdelen toe die als categorie dezelfde waarde hebben als de waarde van het laatst toegevoegde categorieItem.

    Zoals ik zei: niet zo netjes, want hij moet dus meerdere keren door hetzelfde lijstje gaan in plaats van één keer, maar het werkt wel. Mocht ik ooit een betere manier tegenkomen, dan zal ik m’n programma wel aanpassen:)

    Bijdrager
    dj bazzie wazzie

    Misschien een late reactie maar ik werk normaal met 4 handlers aan de outline view (niet 10.3.9 compatible)

    child of item
    item expandable
    number of rows
    item value

    Met deze kun je de outline view vullen wanneer de gebruiker er om vraagt. Wanneer er een data item wordt opengeklapt wordt er pas gevraagd om de data. Ik gebruik dit omdat anders het laden van mijn outline view in sommige programma’s een paar seconden duurt. Zelf vind ik het mooier dat alles snel gaat

    Bijdrager
    Jakko Westerbeke
    ”dj

    Misschien een late reactie maar ik werk normaal met 4 handlers aan de outline view (niet 10.3.9 compatible)

    Je weet toch niet toevallig het antwoord op m’n eigenlijke vraag?:) Dus: als je bijvoorbeeld 10 “hoofd”items in de outline-view hebt staan, hoe voeg je dan iets toe als kind-item van, laten we zeggen, nummer 4?

    Bijdrager
    dj bazzie wazzie

    Ja dat weet ik wel maar moet het op jou manier of mijn manier? Als je mijn manier hebt werk je in principer met allemaal verschillende lijsten alleen oook die worden geladen en wanneer het nodig is.

    Goed je hebt een lijst van 10 items zeg je. Ik denk dat dit de manier moet zijn die jij handhaaft

    de variabele column1 moet gelijk zijn aan de applescript kolom naam. anders krijg je een error

    [code:1:fb5aed4413]
    –hier eerst een lijst met items uit de outline view of gewoon een lijst met 10 items

    set theOutlineViewContents to {{column1:"1"}, {column1:"2"}, {column1:"3"}, {column1:"4"}, {column1:"5"}, {column1:"6"}, {column1:"7"}, {column1:"8"}, {column1:"9"}, {column1:"10"}}

    –we gaan nu een child toevoegen aan item 4

    set item 4 of theOutlineViewContents to {column1:"4", |items|:{{column1:"16"}}}

    set content of outline view "outlineView" of window "main" to theOutlineViewContents[/code:1:fb5aed4413]

    Bijdrager
    Jakko Westerbeke

    Bedankt. Ik heb het nog niet geprobeerd (het is veel te warm om zoveel na te moeten denken :)) maar ik zal zeker binnenkort eens kijken of het werkt.

6 berichten aan het bekijken - 1 tot 6 (van in totaal 6)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.