Salut,
Scuze că revin așa de greu, dar acum am avut un pic de timp și chef. Scuze.
Pentru cine vrea să se apuce de făcut un cod în applescript vreau să precizez faptul că un astfel de cod se scrie foarte ușor, problema pe care eu am întâmpinat-o este, în cazul meu cu o mulțime de variabile, trebuie să comunici cu foarte multe ferestre, fiecare variabilă fiind o fereastră nouă. Nu m-am chinuit foarte mult, dar nu am găsit ușor cum să adaug un buton de „back”. În cazul în care ai greșit ceva ori dai „cancel” (dacă ai pus un asemenea buton pe fiecare fereastră cu care interacționezi, ori dai stop din applescrip, ori mergi până la sfârșitul scriptului și corectezi manual documentul acolo unde ai greșit.
Din cauză că o variabilă poate modifica mai multe articole sau clauze în contractele create în acest fel, trebuia să aleg să o iau de la capăt.
Pentru că vreau ca contractele să nu fie făcute doar de mine, am ales să fac o interfață scriptului și așa am ajuns să învăț și un pic de xCode, care este într-adevăr un pic mai complex (un pic însemnând foarte puțin), dar și ușurința de lucru și satisfacția e mult mai mare. E important să înțelegi limbajul. În momentul de față am refăcut tot scriptul și interfața în ~6 ore și acum pot redacta un contract în ~3-4 minute, iar dacă cu aceeași persoană trebuie să închei 3-5 contracte diferite (cum se întâmplă de cele mai multe ori), le pot redacta în ~5 min. Cel mai mult pierzând la introducerea datelor de identificare, apoi variabilele sunt ori în check box-uri ori în butoane de tip popUp și e foarte ușor să o selectezi pe cea potrivită. În cazul în care trebuie să închei aceleași tipuri de contracte cu mai multe persoane (în cazul unui concert de operă trebuie să închei contract de prestare artistică și de cesiune a drepturilor conexe drepturilor de autor cu ~ 60 de persoane), setările rămân în interfață, eu trebuind să modific doar datele de identificare și eventual câteva variabile, dacă diferă ceva. Cred că mi-ar lua în jur de 15 min pentru încheierea a 3-5 tipuri de contracte cu 10 persoane. Sunt foarte încântat de reușită.
Ca să nu mai mănânc mult @ am să trec direct la subiect.
Am să limitez tot codul că să nu umplu aici topicul aiurea.
În applescript:
AppleScriptul funcționează cu „set” (setezi variabila), „return” răspunsul variabilei, „tell” (spui ce să facă)
pentru a seta o fereastră cu butoane trebuie să scrii următorul script:
set tipContract to display dialog "Ce fel de contract vrei să redactezi?" with title "Tip Contract" buttons {"Prestări artistice", "Confidențialitate", "Drepturi de autor"} default button "Prestări artistice"
---- codul va afișa o fereastră în care ai 3 butoane, cele puse între {} și între "".
set rasTipContract to button returned of result
---- codul preia butonul pe care utilizatorul l-a apăsat.
set rasTipContract to display dialog {"Ați selectat " & rasTipContract}
---- codul afișează o fereastră cu textul dintre {"text" și răspunsul la butonului apăsat}.
set NrContract to display dialog "Acest contract are numărul" default answer "A000001" with title "Număr Contract" buttons {"Next"} default button "Next"
---- îmi setează variabila „NrContract" să îmi afișeze fereastra cu titlul „Număr Contract” cu textul "Acest contract are numărul" în care să introduc nr. contractului, cu răspuns predefinit „A0000001”, fereastră ce va avea butonul „next”, care va fi selectat.
În acest fel se poate continua cu câte variabile sunt necesare.
Aici am să explic funcția if (dacă).
Voi seta variabila Remuneratie că fereastră cu 2 butoane ( „Sumă” și „%”)
Voi seta rasRemuneratie ca răspuns al ferestrei precedente
În funcția „if” voi seta dacă butonul apăsat este „%”să îmi afișeze fereastra cu valoarea procentului cu care artistul va fi remunerat, răspunsul acesteia „rascodProcent, cu „else if” voi seta să îmi afișeze o fereastră în care să setez valoarea cu care artistul va fi remunerat și răspunsul acesteia „rascodSuma.
set Remuneratie to display dialog "Artistul va fi remunerat cu sumă fixă sau % din încasări" with title "Remunerație" buttons {"Sumă", "%"} -----> fereastră butoane
set rasRemuneratie to button returned of result -----> răspuns fereastră butoane
if rasRemuneratie = "%" then -----> condiție dacă butonul apăsat este „%”
set codProcent to display dialog "Care este procentul cu care Artistul va fi remunerat" default answer "" with title "Remunerație" buttons {"Next"} default button "Next" ----->fereastră valoare procente
set rascodProcent to result's text returned ------>răspuns valoare procente
else if rasRemuneratie = "Sumă" then ------> dacă butonul apăsat în fereastră este „sumă”
set codSuma to display dialog "Care este suma cu care Artistul va fi remunerat" default answer "" with title "Remunerație" buttons {"Next"} default button "Next" ----->fereastră valoare sumă
set rascodSuma to result's text returned ------> răspuns valoare sumă
end if
Mai jos scriptul spune aplicației pages să se deschidă, să creeze un document nou, după templates cu numele din interiorul “”, să activeze documentul, și să spună textului, să schimbe fiecare cuvânt care este „ codNrContract” din document deschis cu răspunsul variabilei NrContract
tell application "Pages"
activate
set thisDocument to ¬
make new document with properties {document template:template "Contract Prestări Artistice"}
tell thisDocument
tell body text
set (every word whose it = "codNrContract") to rasNrContract
if rasRemuneratie = "%" then
set (every word whose it = "codProcent") to (rascodProcent & "%")
else if rasRemuneratie = "Sumă" then
set (every word whose it = "codSumăFixă") to (rascodSuma & "lei")
end if
end tell
end tell
Cred că ați prins ideea. Pun mai jos scriptul așa cum trebuie adăuga în applescript pentru a funcționa:
set tipContract to display dialog "Ce fel de contract vrei să redactezi?" with title "Tip Contract" buttons {"Prestări artistice", "Confidențialitate", "Drepturi de autor"} default button "Prestări artistice" ------>fereastră butoane alege contract
set rasTipContract to button returned of result ------>răspundul din fereastra de alegere a tipului de contract
set rasTipContract to display dialog {"Ați selectat " & rasTipContract} ------> fereastră de informare a tipului de contract selectat
set NrContract to display dialog "Acest contract are numărul" default answer "A000001" with title "Număr Contract" buttons {"Next"} default button "Next" ------> fereastră de selectare numărului contractului
set rasNrContract to result's text returned ------> răspunsul care ferestrei anterioare
set Remuneratie to display dialog "Artistul va fi remunerat cu sumă fixă sau % din încasări" with title "Remunerație" buttons {"Sumă", "%"} -----> fereastră tip remunerație
set rasRemuneratie to button returned of result -----> răspunsul ferestrei tip remunerație
if rasRemuneratie = "%" then ----> condiția dacă răspunsul este „%”
set codProcent to display dialog "Care este procentul cu care Artistul va fi remunerat" default answer "" with title "Remunerație" buttons {"Next"} default button "Next" ----> fereastră în care să introduci valoarea procentelor
set rascodProcent to result's text returned -----> răspunsul cu valoarea procentelor
else if rasRemuneratie = "Sumă" then ----> condiția dacă răspunsul este „Sumă”
set codSuma to display dialog "Care este suma cu care Artistul va fi remunerat" default answer "" with title "Remunerație" buttons {"Next"} default button "Next" ----> fereastră în care să introduci valoarea sumei
set rascodSuma to result's text returned -----> răspunsul cu valoarea procentelor
end if ---> sfârșitul condiției.
tell application "Pages" ----> spune aplicației Pages
activate ------> să se activeze
set thisDocument to ¬
make new document with properties {document template:template "Contract Prestări Artistice"} ------> crează variabila thisDocument și să creeze un nou document din template
tell thisDocument -----> spune documentului
tell body text ------> spune textului
set (every word whose it = "codNrContract") to rasNrContract ---> să modifice ficare cuvând „codNrContract” cu răspunsul variabilei NrContract
if rasRemuneratie = "%" then -----> dacă răspunsul variabilei remunereație este „%”
set (every word whose it = "codProcent") to (rascodProcent & "%") ----> modifică cuvântul „codProcent” cu variabila „rascodProcent” și adaugă "%"
else if rasRemuneratie = "Sumă" then
set (every word whose it = "codSumăFixă") to (rascodSuma & "lei")
end if
end tell
end tell
end tell
Dacă nu se descurcă cineva să scrie aici și dau și alte detalii. baftă.
Dacă este interes vor reveni și cu xCode-ul dar acolo e mai complicat pentru că trebuie să introduc și imagini etc.
O seară frumoasă