LaunchBar 6 er en applikasjonsstarter som kan utvides med handlinger. I tidligere versjoner av LaunchBar, Handlingene ble skrevet inn Apple. Med LaunchBar 6, ethvert skriptspråk kan brukes, men det foretrukne språket er Javascript.
I denne veiledningen vil jeg vise deg hvordan du lager dine egne handlinger i Javascript å forlenge funksjonaliteten til LaunchBar. Derfor, et arbeidskunnskap om Javascript er forventet. Artikkelen Bli en profesjonell JavaScript-utvikler med Tuts + kurs kan hjelpe deg med å komme i gang med Javascript.
Hvis du vil lære om grensesnittet med LaunchBar 6, du kan lese LaunchBar 6 Handlingsdokumentasjon.
Søknaden som denne handlingen vil samhandle med, er FoldingText. FoldingText er en flott markdown editor med mye utvidbarhet. Du bør sjekke ut opplæringen, Tilpasse FoldingText, for å se hvordan du kan tilpasse FoldingText for å passe dine behov.
For å kommunisere med FoldingText, Jeg skal vise deg hvordan du bruker Apples nye JavaScript for automatisering i stedet for Apple. Du kan lese JavaScript for automatiseringsdokumentasjon for å hjelpe deg med å komme i gang med språket.
For å begynne å gjøre en handling, må du opprette en katalog med .lbaction forlengelse.
Opprette handlingeneI Finder, høyreklikk i en katalog og velg Ny mappe navnet på den nye katalogen FoldingTextAddToTag.lbaction. Det vil ikke lenger se ut som en katalog i Finder. LaunchBar registrerer den utvidelsen med OS X å behandle det som en spesiell filtype. Det er fortsatt en katalog, men du beveger den rundt som en fil.
Viser indekslistenFor å se innholdet på nytt, Høyreklikk på katalogen og velg Vis pakkeinnhold.
HandlingsinnholdEn gang i handlingspakken er alle filene og katalogene som utgjør en handling, synlige.
Trærvisning av en handlingDen grunnleggende strukturen til en handling kan ses med tre kommando. De tre kommandoen er en standard Unix kommando for å grafisk vise en katalogstruktur. Du kan installere den med Hjemme brygget med kommandoen:
brygge installasjonstreet
Du ser deretter en katalog med tre
.
For å opprette strukturen for en ny handling, opprett en innhold katalog med underkataloger av ressurser og scripts. I den øverste katalogen, a Readme.md filen må opprettes med en beskrivelse av handlingen i Markdown format.
Deretter plasseres et ikon for handlingen i ressurser katalogen. Bare bruk den i nedlastingen og plasser den der.
I innhold katalog, den Info.plist filen må opprettes. Denne filen forteller LaunchBar hvordan å bruke handlingen I den filen legger du følgende:
CFBundleIdentifier com.customct.launchbar.FoldingTextAddToTag CFBundleName FT-AddToTag CFBundleVersion 1.0 CFBundleIconFile ikon LBDebugLogEnabled LBTextInputTitle ft: addtag LBScripts LBDefaultScript LBLiveFeedbackEnabled LBRequiresArgument LBReturnsResult LBRunInBackground LBScriptName default.js LBDescription LBAuthor Richard Guay LBWebsite http://customct.com LBEmail [email protected] LBTwitter @CustomComputerT LBSummary Dette gjør det mulig å legge til en melding til en arbitary-tag i det øverste dokumentet. LBArgument Det tar et tagnavn og et notat å legge ved taggen. LBResult Legger til en melding til en tag i FoldingText. LBRequirements Ingen
Dette er en tekst plist som kan redigeres med ethvert tekstredigeringsprogram. De forskjellige tastene forteller LaunchBar hva å gjøre med handlingen Minimumsknappene er:
Denne nøkkelen gir en unik identifikator for handlingen. For å sikre unikt, bruker jeg en omvendt DNS på nettstedet mitt med programnavnet og handlingsnavnet.
Denne nøkkelen gir et navn til handlingen. Dette vises i handlingslistedialogen for å aktivere / deaktivere.
Denne nøkkelen gir versjonnummeret for handlingen. For denne handlingen vil det være 1.0.
Denne nøkkelen gir navnet på ikonfilen i ressurser katalog over handlingen. Filtypen er ikke gitt.
Denne nøkkelen er en boolsk som bestemmer statusen for logging. Dette bør slås av med en falsk verdi.
Denne nøkkelen er navnet som brukeren vil bruke til å ringe handlingen fra LaunchBar. Det er ft: addtotag. Som brukeren begynner å skrive, LaunchBar vil liste alle handlinger og filer som begynner å matche den. Oftest må du bare skrive ft: en eller legge til å komme til denne handlingen.
Denne nøkkelen starter en annen ordliste for det forrige LBTextInputTitle nøkkel. De neste seks nøklene er i denne ordlisten for å beskrive hvordan handlingen fungerer.
Dette starter handlingsskriptdefinisjonsordlisten. De neste fem nøklene er i denne ordboken.
Denne boolske nøkkelen forteller LaunchBar om scriptet vil gi live tilbakemelding. Live tilbakemelding er en liste over alternativer for å velge fra i LaunchBar. Denne handlingen gir en liste over taggenavn for å velge fra. Derfor bør dette være sant.
Denne boolske nøkkelen forteller LaunchBar hvis denne handlingen krever et argument. Igjen, denne handlingen trenger meldingen som skal legges til taggen. Derfor vil det være sant.
Denne boolske nøkkelen forteller LaunchBar hvis denne handlingen returnerer noen resultater. Siden denne handlingen har live tilbakemelding, må dette også være sant.
Noen handlinger vil bare starte noe og kan gjøres i bakgrunnen slik at LaunchBar trenger ikke å vente på det eller registrere det er utgang. For denne handlingen vil denne nøkkelen være feil.
Denne nøkkelen forteller LaunchBar navnet på skriptet som skal utføres. Skriptet må være i scripts katalogen.
Denne nøkkelen starter den siste ordboken som beskriver forfatteren av handlingen og ulike deler av informasjonen om handlingen. Noen av dette vises til brukeren når handlingen er installert. Disse nøklene er veldig selvforklarende.
Med denne plistfilen på plass og ikonet i ressurser katalog, hoveddelen av handlingen kan opprettes. Åpne scripts underkatalog og opprett en fil som heter default.js. Legg inn følgende i det:
// // Funksjon: Kjør // // Beskrivelse: Denne funksjonen kalles av LaunchBar når handlingen kalles uten en streng. // Det oppretter en meny som LaunchBar vil gi til brukeren. Menyelementene lister // faktiske funksjoner for å ringe for å få til en handling i FoldingText. Bare ring // runWithString er en tom streng. // funksjon run () runWithString (""); // // Funksjon: runWithString // // Beskrivelse: Denne funksjonen kalles av LaunchBar når handlingen kalles med en streng. // Det oppretter en meny som LaunchBar vil gi til brukeren. Menyelementene lister // faktiske funksjoner for å ringe for å få til en handling i FoldingText. // // Inputs: // string En streng gitt av brukeren. // funksjon runWithString (streng) // // Opprett variabler som vil bli brukt. // var resultat = []; streng = string.trim (); // // Få en liste over tagger fra det gjeldende dokumentet. // var tags = getTagsFromDocument (). split (","); // // Denne funksjonen skal kalles for å lage en ny liste. Lag det. // // // Foreach-tag, legg til en menyoppføring som barn. // / tags.forEach (funksjon (element) // // Dette legger til kommandoen AddToTag. // result.push (title: item, subtitle: "FoldingText: Add to Tag", ikon: "ikon", handling : 'addToTag', actionArgument: item.trim () + "|" + streng, actionRunsInBackground: true, actionReturnsItems: false);); // / Returner den resulterende menylisten. // retur (resultat); // // funksjon: getTagsFromDocument // // Beskrivelse: Denne funksjonen vil bruke en osascript for å spørre det øverste FoldingText //-dokumentet for en liste over koder. Denne listen returneres til kallingen // rutinen. // funksjon getTagsFromDocument () var result = LaunchBar.execute ("/ usr / bin / osascript", "getListOfTags.scpt"); returnere (resultat); // // funksjon: addToTag // // Beskrivelse: Denne funksjonen vil bruke en osascript for å legge til en bruker som følger med streng // til den første taggen av typen som er gitt til skriptet. Informasjonen // gitt til skriptet er "tag | text" hvor tag er en tag og tekst er // teksten som skal legges til. // funksjon addToTag (obj) LaunchBar.execute ("/ usr / bin / osascript", "notetag.scpt", obj.toString ());
Dette skriptet har fire funksjoner to er påkrevet av LaunchBar og to hjelperfunksjoner. LaunchBar krever at alle handlinger definerer a løpe()
funksjon som kalles når det ikke er inngang fra brukeren, og runWithString ()
funksjon som tar et strengargument av hva brukeren skriver. De løpe()
funksjon kaller bare runWithString ()
Fungerer med en tom streng.
De runWithString ()
funksjonen får en liste over tagger fra toppen mest FoldingText dokument ved å bruke hjelpefunksjonen getTagsFromDocument ()
. For hver tag er det opprettet en struktur med informasjon som inneholder informasjonen LaunchBar må vise resultatene. Strukturelementene er:
Dette gir en unik tittel til hver delhandling. Det er navnet på taggen for å legge ved meldingen.
Dette er undertekstens undertekst. Jeg har satt den til navnet på handlingen som opprettet denne underhandlingen.
Hver underhandling kan ha et annet ikon, men denne handlingen trenger ikke den.
Dette forteller LaunchBar navnet på funksjonen som skal ringes hvis denne underhandlingen er valgt. For denne handlingen går alle anrop til addToTag ()
funksjon.
Dette definerer argumentet som sendes til funksjonen som er definert i handling. Etikettnavnet er sammenkoblet med innspillet fra brukeren. De addToTag ()
funksjonen vil dette analysere denne strengen for å få taggenavnet og meldingen som skal legges til taggen.
Dette boolske feltet er sant, så det LaunchBar venter ikke på at funksjonen kommer tilbake. Det tillater brukeren å gå til en annen oppgave raskt.
Dette er falskt slik det LaunchBar vil ikke samle utgangen fra funksjonssamtalen.
De to siste funksjonene ringer JavaScript for automatisering skript som er lagret i scripts katalogen. Disse funksjonene kaller et kommandolinjeprogram ved å bruke LaunchBars spesielle kommando LaunchBar.execute ()
.
Opprett en fil som heter getListOfTags.scpt og åpne den inn Script Editor. I denne filen, legg inn følgende kode:
funksjonen runde (arg) app = Application ("FoldingText"); doc = app.documents [0]; hvis (doc! = null) return doc.evaluate (script: "funksjon (editor) return editor.tree (). tags (true) .sort ();");
Når en JavaScript for automatisering filen er løp med osascript tolk, det vil ringe til løpe()
fungere med alt som er lagt til kommandolinjen bestått som en streng til den.
Denne koden vil få en applikasjon objekt for FoldingText program. Dette er det samme som fortell søknad ...
i Apple. Den bruker deretter det aktuelle applikasjonsobjektet til å spørre om det øverste dokumentet. Hvis det er et øverste dokument, gir funksjonen det a Javascript program til evaluere som vil returnere alle kodene i dokumentet. Disse kodene returneres deretter til kommandolinjen.
Det andre skriptet kalles notetag.scpt med denne koden:
funksjonen runde (arg) app = Application ("FoldingText"); doc = app.documents [0]; hvis (doc! = null) return doc.evaluate (script: "funksjon (editor, alternativer) var tree = editor.tree (), q = options.toString (). trim ), result = "; var tag = q [0], q = q [1]; var tnode = editor.tree (). evaluateNodePath ('// @' + tag) [0]; hvis (tnode) var melding = tree.createNode (q); tnode.appendChild (melding); else result = 'No' + tag + 'Found.'; returnere (resultat); ", withOptions: arg);
Dette er det samme som forrige skript, bortsett fra Javascript passert til evaluere kommando. Dette Javascript vil analysere inngangsargumentet til en tag og melding. Det forteller da FoldingText for å legge til meldingen til den taggen i dokumentet.
Når alle disse brikkene er på plass, dobbeltklikk du på FoldingTextAddToTag.lbaction fil. OS X vil automatisk laste den inn i LaunchBar.
Laster handlingenNår du velger Installere, Handlingen vil bli lagt til handlingene som brukes av LaunchBar.
Kjører handlingenFor å kjøre handlingen, aktiver LaunchBar og skriv inn addtotag og handlingen vil dukke opp. Hvis du velger det, vises en liste over koder i øverste rekkefølge FoldingText dokument og en tekstboks. Sett en melding i tekstboksen og velg en tagg. Den oppgitte meldingen vil bli lagt til taggen.
Denne opplæringen demonstrerer hvordan du skriver LaunchBar handlinger som bruker Javascript og JavaScript for automatisering. Nå som du vet hvordan du gjør det, må du begynne å øve ved å gjøre flere handlinger.