nvaccess / nvda

NVDA (NonVisual Desktop Access) este un cititor de ecran gratuit și open source pentru Microsoft Windows.Este dezvoltat de NV Access în colaborare cu o comunitate globală de colaboratori.Pentru a afla mai multe despre NVDA sau pentru a descărca o copie, vizitați site-ul principal NV Access.

Vă rugăm să rețineți: proiectul NVDA are un cod de conduită pentru cetățeni și colaboratori. NV Access se așteaptă ca toți contribuitorii și ceilalți membri ai comunității să citească și să respecte regulile stabilite în acest document în timp ce participă sau contribuie la acest proiect.

Obțineți asistență

Dacă sunteți un începător, un utilizator avansat, un dezvoltator nou sau cu vechime, sau dacă sunteți o organizație care dorește să afle mai multe sau să contribuie la NVDA, puteți obține asistență prin intermediul documentației existente, precum și prin intermediul mai multor canale de comunicare dedicate cititorului de ecran NVDA. Iată o prezentare generală a celor mai importante surse de asistență.

Documentație

  • Ghidul utilizatorului NVDA
  • Ghidul dezvoltatorului NVDA
  • Ghidul dezvoltatorului NVDA
  • NVDA Add.ons Development Internals
  • NVDA ControllerClient manual
  • Documentația suplimentară este inclusă în Wiki al acestui depozit și în Community Wiki

Canale de comunicare

  • NVDA Users Mailing List
  • NVDA Developers Mailing List
  • NVDA Add-ons Mailing List
  • Canal de mesagerie instantanee pentru asistență NVDA
  • Alte surse, inclusiv grupuri și profiluri pe canalele de socializare, site-uri web și liste de discuții specifice fiecărei limbi etc.

De asemenea, puteți obține asistență directă de la NV Access. Consultați site-ul web NV Access pentru mai multe detalii.

Alte legături cheie ale proiectului

  • NVDA pe GitHub
  • Probleme NVDA pe GitHub: Rapoarte de erori, cereri de caracteristici, etc.
  • Instantanee de dezvoltare NVDA: Construcții generate automat ale proiectului în starea sa actuală de dezvoltare
  • NVDA add-ons: Obțineți add-ons pentru a îmbunătăți NVDA
  • Centrul de coordonare și suport pentru add-ons NVDA: Totul despre mediul de add-ons NVDA
  • NVDA Add-ons Template: Un depozit pentru generarea șablonului Add-ons
  • Translating NVDA: Informații despre cum să traduceți NVDA într-o altă limbă
  • NVDA Controller Client (2010-02-19): API NVDA pentru aplicații externe pentru a vorbi direct sau a transmite mesaje în braille, etc.
  • Contribuirea la NVDA: Linii directoare pentru a contribui la codul sursă NVDA
  • Lista de e-mail NVDA commits: Notificări pentru toate modificările aduse la depozitul Git
  • Arhivele vechi de e-mail: conțin discuții despre dezvoltarea NVDA

Obținerea codului sursă

Proiectul NVDA folosește sistemul de control al versiunilor Git pentru codul sursă și documentație.

Depozitul NVDA Git este localizat la https://github.com/nvaccess/nvda.git. Îl puteți clona cu următoarea comandă, care va plasa fișierele într-un director numit nvda:

git clone --recursive https://github.com/nvaccess/nvda.git

Opțiunea --recursive este necesară pentru a prelua diferite submodule Git pe care le folosim.

Dependențe

Sursa NVDA depinde de mai multe alte pachete pentru a funcționa corect.

Dependențe instalate

Următoarele dependențe trebuie să fie instalate pe sistemul dumneavoastră:

  • Python, versiunea 3.8, 32 bit
    • Utilizați ultima versiune minoră dacă este posibil.
  • Microsoft Visual Studio 2019 Community, versiunea 16.3 sau o versiune ulterioară:
    • Download from https://visualstudio.microsoft.com/vs/
    • Când instalați Visual Studio, trebuie să activați următoarele:
      • În fila Workloads
        • din grupul Windows:
          • Desktop development with C++
        • Apoi, în secțiunea Installation details, sub Desktop for C++, Optional grouping, asigurați-vă că sunt selectate următoarele:
          • MSVC v142 – VS 2019 C++ x64/x86 build tools
          • Windows 10 SDK (10.0.19041.0)
          • C++ ATL for v142 build tools (x86 & x64)
          • C++ Clang tools for Windows
      • În fila Componente individuale, asigurați-vă că sunt selectate următoarele elemente:
    • În fila Componente individuale, asigurați-vă că sunt selectate următoarele elemente:
      • MSVC v142 – VS 2019 C++ ARM64 build tools
      • C++ ATL for v142 build tools (ARM64)

Git Submodules

Câteva dintre dependențe sunt conținute în submodulele Git.Dacă nu ați trecut opțiunea --recursive la git clone, va trebui să rulați git submodule update --init.Ori de câte ori se modifică comiterea unui submodul necesar (de exemplu, după git pull), va trebui să rulați git submodule update.Dacă nu sunteți sigur, rulați git submodule update după fiecare git pull, merge sau checkout.

Pentru referință, următoarele dependențe de timp de execuție sunt incluse în submodulele Git:

  • eSpeak NG, versiunea 1.51-dev commit 53915bf0a
  • Sonic, commit 4f8c1d11
  • IAccessible2, commit cbc1f29631780
  • liblouis, versiunea 3.17.0
  • Unicode Common Locale Data Repository (CLDR), versiunea 38.1
  • NVDA images and sounds
  • Adobe Acrobat accessibility interface, versiunea XI
  • MinHook, tagged version 1.2.2
  • brlapi Python bindings, versiunea 0.8 sau mai recentă, distribuită cu BRLTTY pentru Windows, versiunea 6.1
  • lilli.dll, versiunea 2.1.0.0
  • Interfață Python pentru driverul/cipul FTDI
  • Java Access Bridge 32 biți, din Zulu Community OpenJDK build 13.0.1+10Zulu (13.28.11)

În plus, următoarele dependențe de timp de construcție sunt incluse în submodulul git miscDeps:

  • txt2tags, versiunea 2.5
  • Nulsoft Install System, versiunea 2.51
  • NSIS UAC plug-in, versiunea 0.2.4, ansi
  • xgettext și msgfmt de la GNU gettext
  • Boost Optional (antet independent), de la commit 3922965

Următoarele dependențe nu sunt necesare pentru majoritatea oamenilor și nu sunt incluse în submodulele Git:

  • Pentru a genera documentația dezvoltatorului pentru nvdaHelper: Doxygen Windows installer, versiunea 1.8.15:

  • Când folosiți Visual Studio Code ca mediu de dezvoltare integrat de preferință, puteți utiliza configurația noastră de spațiu de lucru prepopulat pentru Visual Studio Code.Deși acest proiect VSCode nu este inclus ca submodul în depozitul NVDA, puteți verifica cu ușurință configurația spațiului de lucru din depozitul dumneavoastră executând următoarele din rădăcina depozitului.

    git clone https://github.com/nvaccess/vscode-nvda.git .vscode

Dependențe Python

NVDA și sistemul său de construire depind, de asemenea, de o listă extinsă de pachete Python. Toate acestea sunt listate cu versiunile lor specifice într-un fișier requirements.txt din rădăcina acestui depozit. Cu toate acestea, sistemul de compilare are grijă să le aducă el însuși atunci când este necesar. aceste pachete vor fi instalate într-un mediu virtual Python izolat în cadrul acestui depozit și nu vor afecta setul de pachete din întregul sistem.

Pregătirea arborelui sursă

Înainte de a putea rula codul sursă NVDA, trebuie să pregătiți arborele sursă. faceți acest lucru deschizând un prompt de comandă, trecând la rădăcina distribuției sursă NVDA și tastând:

scons source

Ar trebui să faceți acest lucru din nou ori de câte ori se schimbă versiunea de comtypes sau sunt adăugate sau modificate fișiere de limbaj.Rețineți că, dacă doriți să accesați documentația utilizatorului din meniul de ajutor în timp ce rulați versiunea sursă, va trebui, de asemenea, să adăugați user_docs la linia de comandă astfel:

scons source user_docs

În timp ce pur și simplu testați sau confirmați modificări, poate fi mai rapid, de obicei, să faceți doar scons source, deoarece documentația utilizatorului se va schimba de fiecare dată când se modifică numărul de revizuire.

Compilarea NVDAHelper cu opțiuni de depanare

Printre altele, pregătirea arborelui sursă construiește bibliotecile NVDAHelper. în cazul în care încercați să depanați nvdaHelper, puteți controla diverse opțiuni de depanare prin compilarea cu variabilele de linie de comandă nvdaHelperDebugFlags și nvdaHelperLogLevel.

Variabila nvdaHelperLogLevel specifică nivelul de logare (0-59) pe care doriți să îl vedeți, mai mic este mai verbos. Valoarea implicită este 15.

Variabila nvdaHelperDebugFlags primește unul sau mai multe dintre următorii indicatori:

  • debugCRT: bibliotecile vor fi legate cu timpul de execuție C de depanare și vor fi activate aserțiunile. (În mod implicit, se utilizează CRT normal și aserțiunile sunt dezactivate.)
  • RTC: vor fi activate verificările din timpul de execuție (coruperea stivei, variabile neinitializate etc.). (În mod implicit, nu există verificări în timp de execuție.)
  • analyze: rulează analiza de cod MSVC pe tot codul nvdaHelper, oprindu-se la orice avertisment. (valoarea implicită este nici o analiză).

Cuvintele cheie speciale none și all pot fi, de asemenea, utilizate în locul stegulețelor individuale.

Urmează un exemplu care activează verificările de depanare CRT și runtype

scons source nvdaHelperDebugFlags=debugCRT,RTC

Filele pdb cu simboluri sunt întotdeauna produse la compilare, indiferent de stegulețele de depanare.Cu toate acestea, ele nu sunt incluse în distribuția NVDA. în schimb, scons symbolsArchive le va împacheta ca o arhivă separată.

În mod implicit, compilările nu folosesc, de asemenea, nici o optimizare a compilatorului.Vă rugăm să consultați argumentul cu cuvântul cheie release pentru a afla ce optimizări ale compilatorului va activa.

Rularea codului sursă

Este posibil să rulați NVDA direct din sursă fără a fi nevoie să construiți pachetul binar complet și lansatorul.Pentru a lansa NVDA din sursă, folosind cmd.exe, executați runnvda.bat în rădăcina depozitului.

Pentru a vizualiza ajutorul privind argumentele pe care NVDA le va accepta, utilizați opțiunea -h sau --help.Aceste argumente sunt, de asemenea, documentate în ghidul utilizatorului.

Construirea NVDA

O construcție binară a NVDA poate fi rulată pe un sistem fără Python și toate celelalte dependențe ale NVDA instalate (așa cum facem pentru instantanee și versiuni).

Arhivele și pachetele binare pot fi create folosind scons din rădăcina distribuției sursă NVDA. Pentru a construi oricare dintre următoarele, deschideți un prompt de comandă și treceți în acest director.

Pentru a face o construcție binară nearhivată (echivalentă cu o arhivă portabilă extrasă), tastați:

scons dist

Construcția va fi creată în directorul dist.

Construirea programului de instalare

Pentru a crea o arhivă de lansare (un singur executabil care să permită instalarea sau generarea dist portabile), tastați:

scons launcher

Arhiva va fi plasată în directorul de ieșire.

Crearea documentației dezvoltatorului

Pentru a genera ghidul dezvoltatorului NVDA, tastați:

scons developerGuide

Ghidul dezvoltatorului va fi plasat în folderul devDocs din directorul de ieșire.

Pentru a genera documentația codului sursă bazată pe HTML, tastați:

scons devDocs

Documentația va fi plasată în folderul NVDA din directorul de ieșire.

Pentru a genera documentația dezvoltatorului pentru nvdaHelper (care nu este inclusă în obiectivul devDocs):

scons devDocs_nvdaHelper

Documentația va fi plasată în folderul devDocs\nvdaHelper din directorul de ieșire.

Generare arhivă simboluri de depanare

Pentru a genera o arhivă de simboluri de depanare pentru diversele binare dll/exe, tastați:

scons symbolsArchive

Arhiva va fi plasată în directorul de ieșire.

Generare șablon de traducere

Pentru a genera un șablon de traducere gettext (pentru traducători), tastați:

scons pot

Personalizarea compilării

Opțional, compilarea poate fi personalizată prin furnizarea de variabile în linia de comandă:

  • version: Versiunea acestei compilări.
  • release: Dacă aceasta este o versiune de lansare.
    • Acest lucru permite diverse optimizări ale compilatorului C++, cum ar fi /O2 și optimizarea întregului program.
    • De asemenea, instruiește Python să genereze cod de octeți optimizat.
  • publisher: Editorul acestei compilări.
  • certFile: Fișierul de certificat cu care se semnează executabilele. Certificatul trebuie să fie în format pfx și să conțină cheia privată.
  • certPassword: Parola pentru cheia privată din certificatul de semnare. Dacă este omisă, nu se va presupune nicio parolă.
  • certTimestampServer: URL-ul serverului de timestamping care urmează să fie utilizat pentru a cronometra semnăturile authenticode. Dacă este omisă, semnăturile nu vor fi cronometrate.
  • outputDir: Directorul în care vor fi plasate arhivele finale construite și altele asemenea.
  • targetArchitectures: Arhitecturile țintă pe care NVDA ar trebui să le suporte. Valorile posibile sunt all, x86 și x86_64. Aceasta ar trebui lăsată, în general, ca valoare implicită.

De exemplu, pentru a construi un lansator cu o anumită versiune, puteți tasta:

scons launcher version=test1

Pentru mai multe consultați fișierul sconstruct.

Rularea testelor automatizate

Dacă faceți o modificare la codul NVDA, ar trebui să rulați testele automatizate ale NVDA.Aceste teste ajută la asigurarea faptului că modificările de cod nu strică în mod neintenționat funcționalitatea care funcționa anterior.

Pentru a rula testele (teste unitare, verificări ale șirurilor de caractere traductibile), schimbați mai întâi directorul în rădăcina distribuției sursă NVDA, așa cum s-a menționat mai sus. apoi, rulați:

scons tests

Teste unitare

Pentru a rula numai teste unitare specifice, specificați-le folosind variabila unitTests pe linia de comandă. testele trebuie furnizate ca o listă separată prin virgulă. fiecare test trebuie specificat ca un modul, clasă sau metodă Python în raport cu directorul tests\unit.De exemplu, pentru a rula numai metodele din clasele TestMove și TestSelection din fișierul tests\unit\test_cursorManager.py, rulați această comandă:

scons tests unitTests=test_cursorManager.TestMove,test_cursorManager.TestSelection

Verificări ale șirurilor traductibile

Pentru a rula numai verificările șirurilor traductibile (care verifică dacă toate șirurile traductibile au comentarii de traducător), rulați:

scons checkPot

Linting your changes

Pentru a vă asigura că modificările dvs. sunt conforme cu stilul de codare NVDA, puteți rula local linterul Flake8.Unii dezvoltatori au considerat că anumite mesaje de eroare de linting induc în eroare, acestea sunt clarificate în tests/lint/readme.md.runlint.bat va folosi Flake8 pentru a inspecta doar diferențele dintre directorul dvs. de lucru și ramura base specificată.Dacă creați o cerere de tip Pull Request, ramura base pe care o folosiți aici ar trebui să fie aceeași cu cea pe care ați folosi-o pentru o cerere de tip Pull Request. În cele mai multe cazuri, aceasta va fi origin/master.

runlint origin/master

Pentru a fi avertizat mai repede în legătură cu erorile de linting, este posibil să doriți să integrați Flake8 alte instrumente de dezvoltare pe care le utilizați. pentru mai multe detalii, consultați tests/lint/readme.md

Teste unitare

Testele unitare pot fi rulate cu scriptul rununittests.bat. intern, acest script utilizează cadrul de testare Nose Python pentru a executa testele. orice argumente date la rununittests.bat sunt transmise către Nose.Vă rugăm să consultați documentația proprie a Nose cu privire la modul de filtrare a testelor etc.

Teste de sistem

Testele de sistem pot fi rulate cu scriptul runsystemtests.bat.În mod intern, acest script utilizează cadrul de testare Robot pentru a executa testele.Toate argumentele date la runystemtests.bat sunt transmise către Robot.Pentru mai multe detalii (inclusiv filtrarea și excluderea testelor), consultați tests/system/readme.md.

Contribuirea la NVDA

Dacă doriți să contribuiți cu cod sau documentație la NVDA, puteți citi mai multe informații în ghidul nostru de contribuție.

.