Dashcode
(1 korsinik/a gleda/ju temu) (1) Gost

Dashcode


12.09.2008 | 15:27
Zna li itko kako da napravim widget da samo kliknem na riječ pa da napravi copy, tako da samo u safariu napravim past?!

Nadam se da razumijete pitanje,nešto tipa serialbox klik-copy?!
13.09.2008 | 02:06
Zna li itko kako da napravim widget da samo kliknem na riječ pa da napravi copy, tako da samo u safariu napravim past?!


Pretpostavimo da imaš nekakav textarea u svom widgetu, u kojem je tekst. I pretpostavimo da kopiranje ne trigga klik (onclick event) nego dupli klik (ondblclick event), kao u Serial Boxu.

Zapravo, da ne pretpostavljamo uzalud možeš kreirati novi Custom widget (prazan), u njemu jedan textarea i upiši u textarea nekoliko riječi, tako da je svaka od sljedeće odvojena newline (return) karakterom. To će "glumiti" tabelarne retke iz Serial Boxa, da ne petljamo s konstrukcijom prave tablice.

Sad dodaj handler za ondblclick event (textarea). Nazovi ga kakogod i u njega možeš kopirati ovo:

function kakogod(event)
{
var dataForPasteboard = event.target.defaultValue.substring(event.target.selectionStart,event.target.selectionEnd);
widget.system("/bin/echo -n '"+dataForPasteboard+"' | /usr/bin/pbcopy", null);
}

U Widget Attributes OBAVEZNO uključi Allow Command Line Access. Pokreni widget, dblklikni na neku od riječi u textarea i upravo si je kopirao u clipboard.

Što gornji event napravi? Prvo parsa selekciju i kopira označeni dio u varijablu dataForPasteboard. Blagodat dblklika (i razlog zašto je ovo zakačeno za ondblclick) je što će automatski selektirati cijelu riječ na koju klikneš. Možeš koristiti i onselect ako ti više odgovara preciznija selekcija.

Da bi druga linija (widget.system...) radila, widgetu mora biti dozvoljen pristup komandnoj liniji (od tuda onaj Allow Command Line Access). Sintaksa u nastavku poziva sistemsku pbcopy naredbu (hint: postoji i pbpaste) i to tako da joj proslijedi sadržaj varijable dataForPasteboard (u kojoj je selekcija) printajući njen sadržaj s naredbom echo i koristeći switch "-n" da echo NE doda newline karakter prilikom prosljeđivanja selekcije u clipboard - u protivnom bi Paste (u Safariju ili bilo gdje drugdje) osim selekcije, automatski imao i jedan "enter" na kraju.

Umjesto onog "null" iza zareza bi trebao biti endHandler - ako je "null", funkcija se izvodi sinhrono, što znači da je ostatak widgeta "smrznut" dok funkcija ne obavi svoje. No, nije kritična (brzo se izvršava i mala je vjerojatnoća da će nešto poći po zlu) pa za "kućnu upotrebu" spomenuti endHandler nije nužan. Detalji su opisanu u ADC Home > Reference Library > Reference > Apple Applications > Dashboard > Dashboard Reference > Widget Object.

Inače, pozivanje komandne linije i pbcopy naredbe nije nešto što normalnom čovjeku prvo padne na pamet. Logičniji put bi bio korištenje oncopy handlera, ali problem je u tome što dotični postoji samo za body widgeta i trigga se na CMD+C (tipke!). Nije mi poznato kako triggati event u widgetu programski (s obzirom da fireEvent() ne postoji) pa to očito nije rješenje tvog problema. No, ako ti zatreba takvo rješenje, Dashcode ga ima u svom Code Libraryu, pod Events i zove se Copy Support. Ali ima i bug pa, ako ga odlučiš koristiti, imaj na umu da tamo gdje piše "display" zapravo treba pisati "dataForPasteboard".
13.09.2008 | 13:02
Ma ovo radi super! Nešto sam slično pokušavao ali ovaj kod koji si mi dao nisam nigdje pronašao,samo copy support koji mi nije pomogao.
Hvala puno a posebno na detaljnom objašnjenju!

P.S. Dal mogu zaključat text jer sad ga mogu u dashdordu slučajno promjenit?
13.09.2008 | 15:09
Dal mogu zaključat text jer sad ga mogu u dashdordu slučajno promjenit?


Zaključati dok editiraš, u Dashcodeu (ukratko: ne; možeš eventualno isključiti Visible flag, ali onda ne vidiš kompletan textarea) ili dok se izvršava?

Ako je ovo drugo u pitanju (a pretpostavljam da je), textarea je po defaultu editabilan i nema neki "switch" koji bi ga pretvorio u "view only". No, zato je tu workaround: dodaj handler na onkeypress (ili neki sličan, ovisi što ti najviše odgovara) event i u njemu "presretni" editiranje. Ako event nazoveš "presretac", ovo će biti dovoljno:

function presretac()
{
event.preventDefault();
event.stopPropagation;
}

Textarea će biti prikazan uredno, onselect će se ponašati normalno (i triggati kopiranje u clipboard), ali će svaki pritisak na tipku biti prosljeđen u crnu rupu. Imaj na umu da to znači da, dok je dotični textarea odabrana kontrola, ni CMD+Q ne radi! Tek kad user klikne izvan textarea, prestaje presretanje i može quitati widget preko tipkovnice - može biti feature, ali može biti i bug.
13.09.2008 | 16:30
Mislim da če ovako biti sasvim dobro.

thx Dj
Moderatori: Bertone
  • Stranica:
  • 1

Vikalica™

Zadnja poruka: pred 23 sati, 33 minuta
  • CoffeePod: Prodajem Thunderbolt2 original Apple kabel zajedno sa original, gajnc novim Apple adapterom = 100€
  • mbp2009: Dosta koristan app meni osobno, Volume Pad, stoji u widgetu, napravi zone lijevo i desno na trackpadu za podesavanje svjetline ekrana i glasnoće zvuka
  • mbp2009: [link]
  • Piko: Odabereš video i titlove, a SubSync analizira govor, uspoređuje ga s tekstom titlova i automatski prilagođava njihovo vrijeme prikaza da budu usklađeni sa zvukom.
  • drlovric: Piko: Izgleda zanimljivo. Kako radi ovo? :)
  • Piko: [link] evo, ARM verzija aplikacije ... autor je to napustio a aplikacija radi super .... no originalna je intel only, radi preko rozete .... pa sam forkao i složio ARM verziju
  • Yonkis: Super mi je kad napišu "Download for free on the App Store." Najbolje da mi naplate skidanje i instalaciju. Jako duhovito.
  • ZoPaj: [link]
  • Yonkis: Jako gledljiv. Meni.
  • Riba: Ne, je li gledljiv?
  • Yonkis: Gledao jučer dokumentarac MUSK, gledao još netko?
  • smayoo: Ajd... :)
  • CoffeePod: [link]
  • CoffeePod: Čudo
  • CoffeePod: Pogledajte ovo čudi
  • smayoo: Koji ZIPani post... :D
  • Riba: Opera radi nakon brisanja cachea, vjerojatno ce i Safari na iPadu. RIP Miso, i za drlovrica uskoro lijepe novosti.
  • Riba: +
  • Riba: + Opera
  • Gjuroo: Laka mu zemlja...
  • smayoo: Ae, partija nan je Mišo... :(
  • jura22: iPad Sfari nema pluseva.
  • jura22: iPad
  • drlovric: Tako da cekamo i dalje. Nije belaj :)
  • drlovric: Za sta koristite te pluseve pa tolika euforija :) Ja cekam davno obecani responsive forum ali bice da nam je Riba previse zauzet :/
  • Riba: Pogledam sutra na Operi, Firefox je ok.
  • jura22: Ovo je Safari, a na Operi na radi.
  • jura22: ++++
  • smayoo: Bajdvej, na kraju nisam brisao browser cache.
  • smayoo: Eeeee, ček sad dok nadoknadim sve izgubljene pluseve... ++++++ ++++ +++ ++++++ +++ +++ +++++++ +++ :P
  • smayoo: +++++++
  • smayoo: +
  • Riba: a+b
  • Gjuroo: Radi!
  • Gjuroo: plus
  • ZoPaj: a b
  • Riba: Obrisite browser cache, n00bs.
  • Riba: +
  • jura22: i opet ništa
  • jura22: a b
  • smayoo: +
  • smayoo: RIP :(
  • zoranowsky: R.I.P. Sir Patrick Stewart
  • jura22: h
  • jura22: Zašto plus ne ide?
  • jura22: A B
  • jura22: A B
  • dpasaric: Haha! :)
  • Yonkis: Riba - vikao sam na vikalici ali nije radila. :)
  • dpasaric: Slobodno tamo komentirajte!

Za vikanje moraš biti prijavljen.

Prijava

Novo na Jabučnjaku

Teme

Poruke

Oglasi

Komentari

Anketa

Koji Mac koristite?

Page Speed 0.67 Seconds

Provided by iJoomla SEO